본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.
💻 TIL(Today I Learned)
📌 Today I Done
✏️ 1. 프로젝트 파트 완성하기
-
길게 쓰여진 문장 줄이기 (구문 다이어트)
-
내가 쓴 문장에 핵심 키워드가 있는지 점점
-
두괄식으로 제목을 정리
✏️ 2. Give me the ticket (최종 프로젝트)
- 프로젝트 소개 : 공연 예매와 예매한 티켓의 중고 거래를 지원하는 서비스
- 사용 스킬
- Back-End : TypeScript, Node.js, Nest.js
- Front-End : HTML, CSS, JavaScript, EJS
- Database : MySQL, Redis, AWS S3
- DevOps / Infra : GitHub Actions, AWS EC2, AWS ELB, AWS Route 53, AWS CloudFront
- 담당 역할
- 로컬 회원가입 및 로그인
- 공연 예매 기능 때문에 해당 서비스에서 사용자를 구분해서 관리가 필요
- AWS RDS를 이용한 MySQL를 통해 사용자가 입력한 정보를 저장
- 인증된 사용자인지 검증하기 위해 토큰 별 Strategy를 구현
- 카카오 소셜 로그인
- 사용자에게 편리하고 안심되는 인증 방법 선택지를 주기 위해서 구현
- 개인정보를 카카오와 같은 안전한 큰 기업에 맡기고, 해당 서비스에서는 토큰만 발급해주는 방법을 사용
- 사용자가 카카오 계정을 통한 로그인이 가능함
- 이미지 업로드
- 해당 서비스에 사용자 프로필 이미지와 공연 이미지가 필요
- 데이터베이스에서 이미지 데이터를 다루기에는 무거움
- AWS S3 서비스를 통해 이미지 데이터를 저장
- S3로부터 받은 이미지 URL를 클라이언트에게 반환
- 데이터베이스 부하를 줄이며, 안정적으로 대량의 이미지를 효율적으로 처리 가능
- 트러블 슈팅
- CD workflow의 멈춤 현상을 해결하여 정상적인 배포 과정 확보
- CD workflow 멈춤 현상으로 인해 배포 지연과 서비스 가용성이 떨어졌음
- EC2 SSH 접속을 도와주는
appleboy/ssh-action
을 다운로드 하는 과정에서 타임아웃이 발생
- 그 과정에서 CPU 점유율이 100%로 치솟는 현상이 발생
- 해당 action을 사용하지 않고 직접 SSH 명령어를 통해서 명령을 실행하는 방법을 사용
- 멈춤 현상을 해결하고 정상적인 배포 과정이 이뤄짐
- URL 노출 방지 및 토큰 전달 개선을 통한 소셜 로그인 보안 강화
- 카카오 로그인 백엔드 API를 호출하면 생성한 토큰을 URL에 넣어서 프론트엔드로 전달했음
- 이 방식은 토큰이 그대로 들어나기에 보안적인 취약함
- 별도의 랜덤 코드를 만들어서 해당 코드를 키로 사용하는 사용자 ID를 레디스에 저장함
- 토큰을 직접 노출된 형태가 아니라 Body에 담아서 전달 → 보안 측면에서 다소 향상
- CDN 적용을 통한 이미지 요청 속도 70% 감소
- 공연 이미지의 용량이 크면 매번 요청할 때마다 시간이 소요
- AWS CloudFront를 사용해 이미지 데이터를 캐싱할 수 있는 여러 엣지 서버 적용
- 이미지 요청에 대한 응답 속도를 서울 리전 기준으로 70% 감소시킬 수 있었음
📌 Tomorrow's Goal
✏️ 자기소개 작성하기
📌 Today's Goal I Done
✔️ 프로젝트 파트 완성하기
-
오늘 프로젝트에 대한 나의 역할과 트러블 슈팅을 작성함
-
작성하고 보니 한 줄씩은 간결해 보이지만 개조식으로 이번에는 밑으로 내용이 길어짐
-
내용이 길더라도 일단은 작성하고 이력서 인텔리픽에서 점검받을 때 따로 피드백을 받도록 하자!