Experience.
프리딕션 (2023.01 ~ 2024.10)
<aside>
회원 수 100만, MAU 30만
우리 학교 맞춤 전 과목 내신 대비 앱 서비스
2024.06 ~ 2024.10
</aside>
<aside>
<img src="/icons/window_gray.svg" alt="/icons/window_gray.svg" width="40px" /> 담당 업무
</aside>
신규 영어 컨텐츠(공진단) 기능 개발: 영단어, 구문분석, 영문법을 interactive하게 학습하는 기능
- RDB 테이블 설계
- 단어 테스트, 단어장 관리 기능 개발
- DynamoDB 활용 영어 교과서 구문 분석 데이터 조회 기능 개발
<aside>
<img src="/icons/activity_gray.svg" alt="/icons/activity_gray.svg" width="40px" /> 주요 경험
</aside>
배포 프로세스 개선
- Docker 이미지 용량 및 배포 빌드 시간 최적화
- python slim 베이스 이미지로 교체 → 용량 약 25% 감축
- multi-stage build 사용 → 용량 약 20% 감축
- requirements.txt 파일을 생성하는 사전 스테이지에서만 poetry 설치
- 빌드 캐시를 효율적으로 활용할 수 있도록 Dockerfile 레이어 구성
- Docker Buildx를 통해 GitHub Action 컨테이너에서 ECR 원격 빌드 캐시 사용
- 실서버 워크플로우에서 이미지 빌드 Step 약 1분 단축
- Doppler 서비스를 활용한 SecretOps 도입
- 프로젝트 환경 변수를 Slack으로 공유할 때의 보안 리스크와, GitHub Secret으로 관리할 때의 의사 소통 비효율 해소
- Github Actions에서 관리하는 백엔드 어플리케이션의 환경변수를 동기화하여 Doppler 대시보드에서 조회 및 수정 가능 → 시크릿 내용을 공유할 필요 없이 변경되었다는 사실만 공유하면 됨
- Lambda 활용해 환경 변수의 변동에 대한 슬랙 알림 자동화 → 변경 사실을 알리지 않는 휴먼 에러 방지
- 백엔드 전체 세션에서 공유
- 개발 서버 배포 프로세스 완전 자동화
- ASIS: Github Actions 사용해 애플리케이션 코드가 수정된 경우 즉각 반영되지만, 환경 변수는 수동으로 EC2에 접속해 반영하여 배포
- TOBE: 환경 변수를 Github Secret에서 관리하고, scp-action을 사용해 EC2에 SSH 접속 후 새로운 환경 변수를 자동 반영할 수 있도록 개선
Poetry 도입으로 패키지 및 가상환경 관리 경험 개선
- 수동으로 requirements.txt를 관리하고, 구성원 별 별도의 가상관리 툴을 사용하는 문제 해결
- 의존성 파일 자동 관리와 이에 대한 가상환경 관리를 하나의 툴에서 편리하게 처리하여 작업 일관성 향상
pre commit
에 추가하여 Git 커밋마다 pyproject.toml과 poetry.lock, 그리고 가상환경의 동기화 여부 자동 확인
- 당시 팀에서 관리하던 3개의 프로젝트에 도입 (당시 공유한 내용)
코드 리뷰 및 리팩토링 활성화