항해 11,12주차 WIL

SaGo_MunGcci·2022년 10월 2일
0

항해99 WIL

목록 보기
6/6

Week do list

  • 기능 구현 및 유지보수

  • 서비스 배포

땅땅 : https://www.ddangddang.world/

  • 낙찰된 게시물에 1:1 채팅방



WIL

  • https 및 자동배포 유지 보수

Https 적용하기:

< nginx를 이용한 https 적용하기 >

핵심 : letsencrypt(certbot)를 이용하여 ubuntu 서버에 SSL을 발급받고 자신의 도메인을 연결 시키면 끝이다.

키워드 : nginx, AWS, CM, certbot, ...

  1. https를 적용하기 위해서는 도메인이 필요하다! 사용하는 도메인(가비아)의 ip가 올바른지 먼저 확인해야한다!

SSL 발급에 실패했을 시 AWS Route53에 레코드를 생성하고

가비아 도메인에 네임서버를 추가로 등록해주면 된다!

  1. ubuntu서버 ssl 발급받기
$ sudo apt update

$ sudo apt-get install nginx

$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt install python-certbot-nginx

$ sudo certbot --nginx -d 도메인

$ sudo certbot renew --dry-run

성공시 브라우저에 도메인을 입력하시면
https가 적용된걸 보실 수 있다.
  1. 서버에 프로젝트(아무거나 상관없다.)를 올려서 실행하자!

서버에서 앱이 실행되면 프로젝트가 아닌 nginx 기본 화면이 출력된다.

이는 우리가 빌드한 프로젝트가 8080 port를 사용하기 때문이다.

그렇다면 8080 port로 들어오는 요청또한 443 port로 redirect 시켜주면 된다.

이제 이 작업을 해보자.

  1. 앱이 실행중인 터미널(git bash)은 잠시 두시고 새로운 터미널을 오픈한 뒤 서버에 연결하자
$ sudo vim /etc/nginx/sites-available/default

"# SSL configuration" 주석이 있는 "server" 블록의 "location /" 블록을 찾아서
(파일의 2/3 지점 정도에 있다.) "location /" 블록을 아래와 같이 수정하자.

location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.

    	        proxy_set_header HOST $host;
                    proxy_pass http://127.0.0.1:8080;
                    proxy_redirect off;
    }
  1. 설정이 끝나셨다면 설정 파일을 건드렸기 때문에 적용을 위해 재시작을 해주어야 한다!!!!!!
$ sudo systemctl reload nginx

(reload를 해보시고 안된다면 restart를 해주세요!)

$ sudo systemctl restart nginx

$ sudo systemctl status nginx

nginx status가 running으로 정상 작동하는 걸 확인하고
브라우저에서 도메인을 입력했을 때 화이트라벨 페이지가 나온다면 https가 적용된것이다.

자동배포 적용하기 : https://velog.io/@sago_mungcci/%EC%9E%90%EB%8F%99%EB%B0%B0%ED%8F%ACGithub-ActionAWS-Codedeploy



Retrospection

  • 프로젝트 후반쯤 가니까 기본 기능 개발 + 개발했던 기능을 수정하고 유지 보수하는 부분에서 우리 팀원들이 너무 고생을 했다. 처음 기획했던 기능과 실제로 개발한 기능이 상이한 부분도 있었고, 특히 채팅부분 1:1 채팅과 그룹채팅간의 서버의 효율성과 안정적인 메시지 전달 부분에서 정말 많이 고생했다. 테이블을 하나로 사용할것인지 채팅방마다 만들것인지 고민을 엄청 많이 했다. 여러매니저님께 여쭈어 보기도 했고 멘토님(PM)께도 이 고민에 대해서 여쭈어 보기도 했다.

  • 결국은 선택하는 것은 우리의 몫이었고 embeded긴하지만 레디스를 적용해서 팀원들이 최종적으로 확인후 최종 릴리즈를 하기로 했다.

  • 그런데 임시 릴리즈때 발생하지 않았던 오류들이 또 발생하기 시작했고 이 오류를 해결하기 위해 정말 밤낮없이 에러해결 및 그에따른 기능을 개발 했던것 같다.

  • 지금 기억에 남는 부분은 1:1 채팅을 방별로 구현했던 기능과 이 기능에 더해서 나갔다 들어오면 레디스로 이전채팅 기록을 불러올 수 있게 하는 부분이었다.

  • 또 릴리즈후 카톡로그인을 한 사람이 입장할때 마다 경매 종료가 되는 문제도 인상깊었다. 그리고 경매 시간이 임박시간이 넘어서 -1분이 되어서 진행되는 것도 재미있는 오류였다.

  • 여튼 정신없이 이틀전에 배포하고 피드백을 받고 수정하는 부분에서 다들 만성적인 수면부족이라 나도 이에 해당해서 지금도 막 졸립다.

  • 지금도 유지보수및 리펙토링을 진행할 예정이고 무중단 배포를 우리조 백앤드 팀원들 끼리 해볼 예정인데 파이팅해야 겠다.

  • 내일 부터 어떤 문제가 있었는지 중간 중간에 메모했던 것을 참고하여 트러블 슈팅을 남겨보려고 한다.



Tommorrow do list

  • 발표 준비하기

  • 리펙토링하기, 무중단 배포 시도하기

  • 메모했던 것을 참고하여 트러블 슈팅을 정리하기



profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글