2024.03.20(수)
💡프로젝트 결과물 예시

🔧사용하는 기술 스택
💾Backend
- Main framework: Express.js (v4.18)
- DB: MariaDB 10.6.16
🖥️Frontend
🚀Production deployment
- AWS, Kubernetes, Minikube
- Jenkins, Terraform, Selenium
📑요구사항 명세서
- Software Requirement Specification (SRS)
- 소프트웨어 구현물의 기능적/비기능적 요구사항을 기술한 문서
- 기능적 요구사항: 소프트웨어가 갖추어야(제공해야) 하는 기능
- 비기능적 요구사항: 성능, 자원 사용량 등에 존재하는 여러 측면의 제약
- 워터폴(Waterfall) 모델의 소프트웨어 개발 프로세스에서 필수 산출물로 정의하는 것이지만, 애자일(Agile) 방법론을 적용하는 경우 민첩성을 높이기 위해 산출을 생략하는 경우도 꽤 있음
⭐ ⬇️워터폴(Waterfall) vs 🔄️애자일(Agile)
➕ TDD(Test-Driven Development): 요구사항 → 테스트 케이스 → 코드
🏰서비스 모델 아키텍처

💡 Forward Proxy와 Reverse Proxy
- Forward Proxy
- 클라이언트 시스템 그룹 앞에 위치
- 컴퓨터가 인터넷의 사이트 및 서비스에 요청하면 프록시 서버가 이러한 요청을 가로채고 중개자처럼 해당 클라이언트를 대신하여 웹 서버와 통신
- 📍클라이언트 앞에 위치하며 원본 서버가 해당 특정 클라이언트와 직접 통신하지 못하도록 하는 것 → 클라이언트 보호 & 특정 사이트 액세스 제어

- Reverse Proxy
- 하나 이상의 웹 서버 앞에 위치
- 클라이언트가 웹 사이트의 원본 서버에 요청을 보낼 때 역방향 프록시 서버가 네트워크 에지에서 해당 요청을 가로채서 원본 서버에 요청을 보내고 응답을 받음
- 📍원본 서버 앞에 위치하며 어떤 클라이언트도 원본 서버와 직접 통신하지 못 하도록 하는 것 → 원본 서버 보호 & 부하 분산

- 로컬 테스트 환경

- Web Server X
- 인터넷 domain name 사용 X (
localhost
)
- DB 인스턴스도 동일한 k8s 클러스터 내에 배치
- SSL 인증 X (
http
, JWT 쿠키 처리 방식에 차이)