#21 [알토르]잃어버린 기억을 찾아서

Hyungjun·2024년 12월 16일
0

알토르

목록 보기
23/23

Mission

EC2를 하루종일 실행되는 서비스이다. 그렇기에 달마다 8천원의 요금이 나왔다. AI 이력서 홈페이지기 때문에 취준을 시작하면 다시 인스턴스를 켜야겠다 생각하며 인스턴스를 중지 시켰다.

6개월이 지나고 다시 나의 이력서 홈페이지를 되살릴 시간이 왔다.

EC2 인스턴스를 다시 켜서 웹페이지를 다시 동작시키기 위해 삽질하면서 다시한번 전체적인 구조를 확인할 수 있는 시간이었다.

EC2 인스턴스를 중지하면 무슨일이 일어나나?

  1. 인스턴스의 ip주소가 변경된다.
  • Route 53에서 api.junresume.com 에 해당하는 ip주소를 변경해주어야 한다.

큰 구조

  1. 프론트엔드에서 api.junresume.com 으로 post 요청을 한다
  2. Route 53에서 api.junresume.com을 보고 ip주소를 알려준다.
  3. ip 주소에 해당하는 EC2 로 연결된다.
  4. EC2로 연결되어 들어오면 nginx가 5001번 포트로 포트포워딩해준다.
  5. 이때 https 요청이라면 포트포워딩 전에 SSL 인증서를 확인한다.
    certbot 이 사용된다.
  6. EC2 내에서 5001번 포트에서 백그라운드 실행 중인 Airesume.py 에 요청이 도달한다.
  7. Aireume.py 는 코드 내에서 openai assistant로 질문을 전달하고 답변을 받아온다.

프론트 엔드

웹 페이지를 눈에 보이게 하는 프론트엔드 코드는 next.js 로 코딩했다. 배포는 vercel에 하였다.

EC2 와의 연관성 : 만약 코드안에 EC2 의 ip주소를 그대로 사용하는 것이 있다면 수정을 해야할것이다. 하지만 확인해보니

IP 주소가 아닌 URL 로 POST 요청을 하고 있었다.
변경해주어야 할 것이 없다.

백엔드

EC2 인스턴스 안에는 nginx 와 백엔드 코드인 Airesume.py 가 백그라운드 재생되고 있었다.

인스턴스가 중지되면 백그라운드 실행과 nginx 가 중지된다. 실행을 위해 다시 켜주어야 한다.

백엔드 코드

$ nohup python3 ./artor/lesson4/airesumeAPI.py > output.log 2>&1 &

현재 깃허브에 백엔드 코드를 올려놓았고 코드 내용은 달라진 것이 없기 때문에 그대로 백그라운드 실행을 해준다.

nginx

nginx 의 역할은 이렇다.

EC2로 연결되어 들어오면 nginx가 5001번 포트로 포트포워딩해준다.
이때 https 요청이라면 포트포워딩 전에 SSL 인증서를 확인한다.
certbot 이 사용된다.
EC2 내에서 5001번 포트에서 백그라운드 실행 중인 Airesume.py 에 요청이 도달한다.

수정

Certbot 는 SSL 인증서를 발급받는데, 3개월이 지나면 갱신을 해야 계속해서 사용할 수 있다.

$ certbot --nginx -d api.junresume.com
$ sudo certbot renew --dry-run

위 명령어로 만료된 인증서를 갱신해 주었다.
또한 다음부터는 자동 갱신이 되도록 명령어를 입력해주었다.

mongoDB atlas

mongoDB atlas 또한 무료로 제공되는 서비스다. 그렇다 보니 사용자가 일정 기간동안 사용하지 않으면 클러스터를 중지시킨다.

클러스터를 중지시켰다가 재생한다고 해서 비밀번호가 바뀐다던지 정보가 삭제된다던지 하는 것은 없다.

그냥 클러스터를 resume 해주었다

부활 성공!

ai chat bot 기능이 부활하였다.

질문과 답변 로그 기능 또한 부활하였다.

profile
Cloud Security Expert

0개의 댓글