-
Notifications
You must be signed in to change notification settings - Fork 2
개발 환경과 인프라 세팅하기!
먼저 간단(?)한 저희 왓치덕스의 아키텍처를 확인하고 넘어갑시다.
cf. 각 구성요소의 역할은 사이드바의 각 주제별 개발일지를 확인해주시면 감사하겠습니다!
특출나게 구현하기 어려운 기능은 없지만, 위 그림에 보이는 백엔드 서버만 3개가 존재해 복잡한 구조가 예상되었습니다.
혼선을 방지하기 위해 개발 환경 및 인프라 세팅을 문서로 남기며 활발하게 공유하였습니다. 프로젝트 초반 주차에는 페어 프로그래밍으로 초기 세팅을 함께하기도 했습니다.
아래에 간단하게 저희가 수행한 개발 환경 및 인프라 구축을 설명 드리겠습니다.
초기 개발 단계부터 각 서버에 Grafana
& Prometheus
를 통한 리소스 모니터링을 수행하였습니다. 사이드바 아래에서 확인할 수 있는 부하테스트 등을 거치며, 낭비되고 있는 메모리 리소스를 확인해 서버 사양을 적절히 조절하였습니다.
아키텍처 그림에서 확인할 수 있듯, 모든 서버 프로세스는 도커 컨테이너로서 실행되고 있습니다. 특히나 네임서버/프록시서버는 다른 서비스가 의존하는 요소입니다. 저희 팀의 변경 사항이 다른 서비스에 영향을 끼치지 않게 2개의 컨테이너로 Blue-Green 배포를 수행하고 있습니다.
부스트캠프 환경상 모노레포지토리를 사용하지만, 각 서버의 역할이 상이하여 복잡한 패키지 매니저 툴은 적용하지 않았습니다. 기존에 익숙한 npm을 사용하여 빠른 작업을 지향하였습니다.
콘솔 (메트릭 확인) API 서버는 NestJS CLI를 적극적으로 사용하는 등 프레임워크에서 권장하는 개발 환경을 적용했습니다. 유지·보수를 위해 NestJS에서 관리하고 있는 개발 환경을 선택하였습니다.
정형화된 프레임워크를 고려하지 않은 네임서버/프록시서버는 저희가 필요한 기능과 개발 편의성을 고려하며 함께 개발 환경을 설정해 주었습니다.
-
SSH BruteForce를 해결해 주변 캠퍼들에게 공유한 세팅 경험!
-
모노 레포지토리 구조에서 초반 작업 중.. 원하는 하위 디렉토리만 pull하기!
-
NestJS 개발 환경은?
-
깃헙 액션으로 무중단 배포를 포함한 CI/CD 적용기!
-
네트워크 세팅 기록
🔗 Project Links
📦 Repository •
🌐 Live Site •
📚 Wiki •
📋 Team Notion
📞 Contact & Support
✉️ Email: watchducks3535@gmail.com • 🐛 Create Issue • 🕒 Updated: 2024-12-03