일지

2023.05.31

scarlet0star 2023. 5. 31. 21:06

어제 얘기하던것을 정리하고 싶었다. 그러니까 AWS를 통해 서비스를 분산화한다면 어플리케이션과 서버(여기선 Nginx)와 백그라운드 처리 담당 celery는 EC2에, DB는 RDS로 정적파일들은 S3에, 메세지큐는 SQS로 하고 Route53에서 도메인을, ACM에서 인증서 처리를 담당한다. 물론 EC2 인스턴스의 보안 그룹 설정, RDS 데이터베이스의 액세스 제어, S3 버킷 정책 등 보안처리가 제대로 이루어져야 원할하게 분산화 서비스가 가능하다. 연결이 안되거나 한다면 권한 에러가 일어날 수 밖에 없다.

 

아무튼, 이렇게 내 서비스를 하나로 묶어서 통합적으로 구성하는 클라우드 환경을 VPC라고 부른다. VPC를 통해 IP 주소 범위를 선택하고, 서브넷을 생성하고, 라우팅 테이블과 네트워크 게이트웨이를 설정하며, 보안 설정을 할 수 있는 등 완전히 사용자가 통제할 수 있는 환경을 갖출 수 있고, ALB는 사용자의 VPC 내에서 실행되는 여러 대의 EC2 인스턴스에 대한 인바운드 네트워크 트래픽을 분산시키는 역할을 하며, 필요에 따라 HTTP 연결을 HTTPS로 업그레이드할 수 있다. 마지막으로 Cloudfront를 통해 캐싱은 물론 SSL/TLS를 통한 암호화, AWS WAF라는 보안 체계를 사용할 수도 있다.

 

추가적으로 더 말해보자면 또한 서버에서 배포하는 과정은 너무나 고된 과정이었는데, 일단은 로컬에서의 영역과 서버에서의 환경이 달랐기에 이를 맞춰주기 위해서 서버에서 수정이 필요했다는 점이 첫번째고, 매번 변경사항이 있을 때마다 서버에 들어가서 끄고 -> pull 받고 -> 앞서 말한 점 때문에 충돌하는 거 있으면 처리해야하는 점이 너무나 힘들었다.

 

다음 프로젝트에서는 기회가 된다면 AWS CodePipeline을 활용해 CI/CD를 도입해보고 싶다. 짧은 프로젝트가 아닌 만큼 빠르게 구축한다면 고생하는 시간을 더 유익하게 쓸 수 있을 것이다!

 

참고사항

https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/connections-github.html

 

GitHub 연결 - AWS CodePipeline

AWS CLI 또는 AWS CloudFormation을 통해 생성된 연결은 기본적으로 PENDING 상태입니다. CLI 또는 AWS CloudFormation을 사용하여 연결을 생성한 후 콘솔을 통해 연결을 편집하여 상태를 AVAILABLE로 설정합니다.

docs.aws.amazon.com