프로젝트 개요
지인 기반 모임 관리 서비스 Knockk(노크)의 백엔드 개발 및 DevOps 운영관리 전체를 담당했습니다. Knockk는 사용자들이 쉽게 모임을 생성하고 관리할 수 있는 플랫폼으로, 주최자가 모임을 생성하고, 참여자가 해당 모임을 참여 할 수 있고, 실시간 알림 및 푸시 기능을 제공합니다. 서비스 피벗 전까지 3개월간 약 300명의 유저가 서비스를 이용했습니다.
주요 성과
1) 기술적 해결 사례
1. 이미지 처리 최적화
프로필 이미지와 모임 사진 등 상황에 맞는 이미지 리사이징 최적화(WebP)를 통해 이미지 업로드 속도를 95% 개선했습니다.
2. Docker 이미지 최적화
Multi-stage build 전략을 사용하여 Docker 이미지 용량을 약 65% 감소시켰고, 이로 인해 배포 속도가 크게 향상되었습니다.
3. 배포 프로세스 자동화
Slack bot을 활용해 API Gateway를 트리거로 Lambda function을 호출하고, 이를 통해 GitHub Actions를 실행하도록 구현하여 배포 프로세스를 간소화했습니다.
4. 배치 작업 구현
모임 일주일, 하루, 한 시간 전 앱 푸시 및 문자 전송을 위한 배치 작업을 구현하여 사용자 참여율을 향상시켰습니다.
2) 비즈니스 기여
1. 효율적인 프로젝트 관리
기획 단계에서 방대해진 기능들을 기획, 개발, 디자인 담당자와 협의하여 버전별로 나누어 진행하는 스프린트 방식을 제안하고 적용했습니다.
2. 비용 최적화
- Amazon Aurora Serverless를 도입하여 서비스의 트래픽 규모에 맞게 데이터베이스를 운영했습니다.
- GitHub Flow 채택으로 배포 스테이지를 간소화했습니다.
- Production 스테이지에서만 ALB를 활용하는 등의 방법으로 서버 비용을 약 75% 절감했습니다.
3) 개발 문화 및 버전 관리
1. 협업 프로세스 개선
- 기획 단계에서 기능정의서 작성 후, 프론트엔드 개발자와 작업 기간, API 엔드포인트 및 데이터 구조를 결정했습니다.
- Swagger를 활용한 API 문서화로 원활한 협업 경험을 제공했습니다.
- 주로 스몰토크를 통해 빠른 의사결정을 진행하여 업무 효율성을 높였습니다.
2. 버전 관리 최적화
소규모 팀에 적합한 GitHub Flow를 제안하고 채택하여 빠른 배포로 버전 관리를 효율적으로 할 수 있었습니다.
4) 인프라 구축 (IaC)
- 기획 요구사항에 맞는 AWS 서비스를 활용한 인프라를 구성했습니다. (ECS, ECR, CloudWatch, Route53, RDS, ALB, S3)
- Terraform의 module, service, backend, variable 개념을 이해하고 요구사항에 맞게 인프라를 구성 및 유지보수했습니다.
5) 주요 기능 구현
1. RESTful API 설계
RESTful 원칙에 따라 데이터를 자원으로 사용하여 엔드포인트를 작성했습니다.
2. 푸시 알림 구현
Firebase Cloud Messaging(FCM)을 활용한 실시간 모바일 앱 푸시 기능을 구현했습니다.
3. 실시간 알림 기능
서버 측 단방향 통신 방식인 Server-Sent Events(SSE)를 제안하고 채택하여 실시간 알림 기능을 구현했습니다.
6) 프론트엔드 개발 능력
- React의 생명주기 및 Custom Hooks 사용에 대한 이해를 바탕으로 프론트엔드 개발 중 로그인 및 회원가입 기능을 담당하여 개발했습니다.
- tailwind 및 shadcn(Headless Component)의 사용으로 디자인 요구사항에 맞는 화면을 구성할 수 있습니다.
Tech Stack
Back : Nest.js(TypeScript), Swagger, TypeORM, MySQL
DevOps : AWS (EC2, ALB, VPC, ECS, S3, Route53, CloudFront, RDS)
더보기