Project 통합택배조회 api 04편 (세번째 구현-마지막)
Created Time: September 14, 2022 11:47 PM
Last Edited Time: September 16, 2022 5:22 PM
Tags: Java, Spring, Computer
왜?
이전편에서 service별로 나눠서 msa구조를 따라하였고, 이에 따라 scale-out 도 가능한 구조로 만들었다.
kafka를 적용하였고, docker-compose를 통해 구조 및 내부네트워크를 활용하였다.
이젠, 마지막 카카오톡 채널과 연결
해야할것
- AWS 적용
- kakao channel에 맞는 답변으로 백엔드 응답 변경
생각해볼것
- https ssl인증? → 카카오채널 https필수아님. 사용X
- aws → aws ec2사용
- docker처리? → docker-compose 사용
- 고유링크로 만든 페이지쪽으로 이동(트레픽생각하기) → 페이지 구현
- kakao_id로 유저인증? jwt token사용? 카카오브라우저는? 쿠키 사용가능? → kakao_id사용
- null 처리 또는 객체 valid처리?
AWS적용
인스턴스 생성
ec2 인스턴스 생성 및 보안 설정으로 사용할 포트 열어주기
https://zzang9ha.tistory.com/360
https://zzang9ha.tistory.com/338?category=999709
도메인 연결
- AWS EC2 탄력적 IP 기능 활성화
- cloud flare에서 DNS로 IP와 도메인 연결(tracking.lostcatbox.com)
docker-compose
- docker 설치
1 | curl -fsSL https://get.docker.com/ | sudo sh |
- docker-compose설치
1 | sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose // 컴포즈 설치 |
- java 11 설치
(./gradlew bootJar
위해서)
1 | sudo apt-get update && sudo apt-get upgrade |
nginx
카카오 봇에서도 IP+포트로 요청이 불가능하다면, subdomain별로 요청을 포트포워딩해줄 nginx를 구성해야한다.
하지만, 다행히 카카오 봇에서는 url:port로 요청이 가능했다. 구성한 aws,docker에서 포트 노출시키고 해당 IP+port로 요청 들어오는것 확인함
KakaoChannel 연결하기
- kakao에서 8080포트와, 8082포트를 get과 post방식을 지원확인하기 → 지원함.
- 요청은 post로 들어옴
1 | { |
- 응답 양식
1 | { |
json 응답 데이터 직접작성
- gradle 추가
1 | implementation 'com.google.code.gson:gson:2.9.0' |
- gson사용
1 | public String test3(){ |
PostCompanyEnum 수정
실제 kakao에서 요청오는 것들은 지금 String으로 들어오므로 Enum으로 변환해주기 위해 다음과같이 Enum 수정
1 | public enum PostCompanyEnum { |
발생한 오류들
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
상황
서버를 밀고 다시 작업하여, pem키 입력후 ssh로 접속할려는데 에러 발생
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
원인
중간자 공격에 위험이 있다고 뜨는데, 이러한 경고의 이유는 전자서명 중 하나인 ECDSA가 관련해서 일치하지 않는다이고, 이를 해소하기 위해서는 아래의 명령어를 입력한다.
해결
ssh-keygen -R [~.~.~.~ ] //내가 접속할 ip주소
UnixHTTPConnectionPool(host=’localhost’, port=None): Read timed out. (read timeout=60)
https://github.com/docker/compose/issues/3927
현상
docker-compose ec2에서 프리티어로 up —build처리시 다음과같은 에러 발생
UnixHTTPConnectionPool(host=’localhost’, port=None): Read timed out. (read timeout=60)
원인
일시적오류이거나 컴퓨터 성능이 안좋음
해결
단순히 timeout만 늘려주면 되거나, scale-up해줘야함
나는 t2.micro → c3.medium 업글해서 해결
1 | export DOCKER_CLIENT_TIMEOUT=120 |
Task ‘prepareKotlinBuildScriptModel’ not found in project ‘:app’
Task ‘prepareKotlinBuildScriptModel’ not found in project ‘:app’
상황
gradle.build 변경사항 반영하다가 다음과 같은 오류 발생
해결
인텔리제이에서 플러그인 코틀린 비활성화
docker 용량 부족
1 | docker volume prune //volume되어있는것 제거 |
ReadTree()알아보기
아마 아예 json raw데이터를 받아야지. 할수있는듯..ㅡㅡ
뭘 받는지 뭘 반환하는지 다시 확인하기