프로젝트 배포
프로젝트 배포
📚 학습 내용 정리
🚀 NGINX
- High performance load balancer, web server, API gateway & reverse proxy
- 비동기 방식이기 때문에 매우 높은 성능
- 정적인 파일(주로 프론트엔드 파일들)을 서비스할 때 뛰어난 성능 (vs. 톰캣)
- Load balancer 나 API gateway 용도로도 사용 가능
- DOS 공격 방어도 가능하다
🌐 CORS (Cross-Origin Resource Sharing)
- 도메인, 포트, 프로토콜이 다를 때 발생
- 브라우저의 보안 정책으로 인해 발생하는 문제
- 예시:
https://domain-a.com
의 프론트엔드 JavaScript 코드가https://domain-b.com/data.json
을 요청하는 경우 - NGINX의 CORS 설정 기억하기
- NGINX 설정 예시:
1 2 3 4 5 6 7 8 9 10 11 12
server { location /api/ { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; if ($request_method = 'OPTIONS') { return 204; } } }
- NGINX 설정 예시:
🔀 프론트엔드와 백엔드 분기
- 포트 (8080 과 8081) -> Cross Origin
- 브라우저는 도메인, 포트, 프로토콜 하나라도 틀리다면 다른 서버로 인식
- 주소를 기준으로 분기처리
/
로 들어오는 요청은 프론트엔트 라우터로/api
로 들어오는 요청은 백엔드로 보낸다
- Webserver로서의 역할
- API gateway로서의 역할
☁️ AWS AutoScaling 의 아쉬운 점
- 도커를 왜 쓰는가에 대한 고찰
- 효율적인 자원 관리
- 자동화된 배포 및 스케일링
- 환경 일관성 보장
🐳 어디까지 도커화 해야할까
- 프론트엔드 / 백엔드는 필수적
- 배포의 효율성 / 편의성을 생각하자
- 선택적 도커화: DB / Jenkins / NGINX
- 각 서비스의 필요와 효율성을 고려
🔧 GitLab -> Jenkins
- CI/CD 파이프라인 구축
- GitLab에서 코드 저장 및 관리
- Jenkins로 자동화된 빌드, 테스트, 배포 수행
This post is licensed under CC BY 4.0 by the author.