console.blog()
클라우드 기반 배포 자동화 여정: AWS S3부터 GitHub Actions까지 본문
1. 문제
AWS를 활용한 CI/CD 파이프라인 구축 과제를 시작하며 여러 고민이 있었다. 우선 어떤 클라우드 서비스를 선택할지가 큰 고민이었다. Vercel이나 Firebase도 좋은 선택지였지만, AWS를 선택한 이유는 실제 업무 환경에서 가장 많이 사용되는 서비스이고, S3와 CloudFront의 조합이 비용 효율적이면서도 확장성이 좋다고 판단했기 때문이다.
특히 AWS 서비스들의 연동 과정이 생각보다 복잡했다. S3 버킷 설정부터 CloudFront 배포, IAM 권한 설정까지 하나하나가 새로운 도전이었다. 처음에는 문서를 보며 따라 하는 것조차 쉽지 않았고, 특히 IAM 권한 설정에서 많은 시행착오를 겪었다. 최소 권한 원칙을 지키면서도 필요한 모든 기능을 사용할 수 있게 설정하는 것이 어려웠다.
GitHub Actions 워크플로우 설계에 시간이 많이 들었다. 특히 시크릿 키와 환경 변수를 안전하게 관리하면서도 효율적으로 사용하는 방법을 찾는 데 많은 고민이 필요했다.
2. 시도
이런 문제들을 해결하기 위해 우선 AWS 공식 문서와 다양한 블로그 글들을 참고했다. 특히 AWS의 Well-Architected Framework를 공부하면서 보안과 성능 최적화에 대한 베스트 프랙티스를 많이 배웠다.
GitHub Actions의 경우, 간단한 예제부터 시작해서 점진적으로 기능을 추가하는 방식으로 접근했다. 처음에는 단순히 S3에 배포하는 것부터 시작해서, 점차 CloudFront 캐시 무효화, 슬랙 알림 등의 기능을 추가했다. 이 과정에서 YAML 문법과 GitHub Actions의 다양한 기능들을 자연스럽게 익힐 수 있었다.
name: 배포 워크플로우
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v2
# ... 더 많은 설정들
성능 최적화를 위해서는 CloudFront의 캐시 설정을 세밀하게 조정했다. 특히 정적 자산과 동적 콘텐츠의 캐시 전략을 다르게 가져가면서, 최적의 성능과 실시간성의 균형을 맞추려 노력했다.
3. 해결
시행착오 끝에 안정적이고 효율적인 CI/CD 파이프라인을 구축할 수 있었다. 특히 인상적이었던 것은 CloudFront 도입 후의 극적인 성능 개선이었다. 평균 로딩 시간이 81.4% 감소했고, 특히 이미지와 폰트 같은 정적 리소스의 전송 속도가 크게 향상되었다.
보안 면에서도 OAI를 활용한 S3 접근 제어, GitHub 시크릿을 통한 민감 정보 관리 등을 통해 안전한 시스템을 구축할 수 있었다. 특히 IAM 권한 설정에서 겪었던 시행착오는 AWS의 보안 모델을 이해하는 데 큰 도움이 되었다.
4. 배운 점
이번 과제를 통해 현대적인 클라우드 인프라 구축의 전체 과정을 경험할 수 있었다. 특히 인상 깊었던 것은 각 서비스들이 독립적으로 존재하는 것이 아니라, 서로 긴밀하게 연결되어 하나의 시스템을 이루고 있다는 점이었다.
GitHub Actions를 통한 CI/CD 자동화의 가치도 실감할 수 있었다. 초기 설정에 시간이 들더라도, 한번 구축해 놓으면 이후의 배포 과정이 매우 편리해진다는 것을 체감했다. 특히 인프라 구성을 코드로 관리하는 IaC(Infrastructure as Code)의 장점을 직접 경험할 수 있었다.
5. Keep: 앞으로도 유지할 부분
앞으로도 새로운 기술을 도입할 때는 이번처럼 충분한 조사와 계획을 바탕으로 진행하고 싶다. 특히 보안과 성능 최적화는 항상 가장 우선순위에 두고 고려해야 할 것 같다.
또한 이번에 구축한 CI/CD 파이프라인은 다른 프로젝트에서도 재사용할 수 있도록 템플릿화하여 관리할 계획이다. 특히 GitHub Actions 워크플로우는 조금 더 모듈화하여 재사용성을 높이고 싶다.
이번 주는 클라우드 인프라와 CI/CD에 대한 실전 경험을 쌓을 수 있는 값진 시간이었다. 특히 AWS 서비스들의 실제 활용 방법과 GitHub Actions를 통한 자동화의 가치를 직접 체감할 수 있었던 것이 가장 큰 수확이었다.
'WIL > Hanghae' 카테고리의 다른 글
[회고] 10주간의 항해를 마치며 (0) | 2024.12.11 |
---|---|
테스트 시나리오 작성과 E2E테스트 (1) | 2024.12.11 |
FSD 패턴과 상태 관리 리팩토링 (0) | 2024.12.11 |
리액트 리팩토링: Context와 Hook을 활용한 상태 관리 개선 (1) | 2024.12.11 |
React Hook을 직접 구현해보자 (0) | 2024.12.11 |