
요약
드라마앤컴퍼니의 인프라 팀에서 AWS 기반 인프라 리팩토링 과정 중 데이터독이 어떻게 사용되었는지 곁들여 설명했다. 데이터독 내용이 메인은 아니지만 서비스 확장 및 팀 규모 성장에 따른 인프라 환경 분리, 권한 분리 필요시 참고하기 좋다! 1년여간의 AWS 기반 인프라 리팩토링 과정을 담아 내용이 매우 많은 발표였으며, 인프라 리팩토링에 관심이 있다면 추후 데이터독 유튜브에 올라갈 풀 영상을 감상해보기를 추천한다!
Intro
- 입사 첫날 AWS 계정을 받았는데… 막막함 투성이..!
- AWS 계정이 1개에 모두 배포
- default VPC에 모두 배포
- 정적 컨텐츠가 대부분 CDN 사용 안함
- 로그가 호스트, cloudwatch, APM 등 산발적으로 흩어져있음
- ISMS 인증 의무 대상
리팩토링을 해보자!
1. 확장 가능한 인프라 아키텍처
1.1. provisioning
- IaC & GitOps 도입
- 여러 작업자가 작업하더라도 인프라의 형상이 무너지지 않도록 대비
- GUI로 작업하는 것처럼 편하게 해야 함
- AS-IS
- 소스코드 & Terraform으로 리소스 관리
- 개발자 로컬 환경에서 Terraform 코드를 배포
- 모든 개발자들에게 배포에 필요한 IAM 권한 부여한 상태
- ECS Task Definition, Redis만 Terraform으로 관리
- TO-BE
- 가능한 모든 것을 IaC로 배포
- AWS, Asure, Github, Datadog, Cloudflare
- 각 배포마다 테라폼 코드를 모듈로 관리하는 별도의 repo 사용
- Terraform 선택, 배포 중앙화 및 GitOps를 위해 Atlantis를 도입
- Git PR를 통해 Terraform 코드 배포
- DynamoDB를 사용하여 StateLock 설정하여 동시에 배포하며 꼬이는 것을 방지
1.2. AWS Account
- 다양한 개발 Stage 분리 필요
- 용도용 개정을 분리
- 네트워크와 데이터 격리
- 업무 담당자에 한해 접근 권한 부여
- 비용 추적성 증가
- 도메인, 팀, stage 단위의 운영 비용 확인 가능
1.3. 마이그레이션 & 트래픽 비용
2. 통합 가시성 확보
2.1. AS-IS
- 데이터가 정말 많은데 보기가 어려웠음
- cloudwatch, container log, host log, local log …
- AWS 로그 외 서드파티 로그는 직접 확인했어야 햇음
- 이미 구축된 APM 이 있었지만
- 클라이언트 메트릭이 잘 적용 X
- 인프라, 네트워크, 보안 지표는 거의 수집 X
- 러닝커브가 있고 백엔드 개발자 친화적으로 느껴지는 UX
- 때문에 백엔드 개발자만 잘 사용
- 모두가 같은 화면을 보고 이야기할 수 있도록 하자!
- PO, PM, 디자이너
- CX
- Data Analyst
- DevOps, Security
2.2. TO-BE : Datadog 사용 예시
3. 보안성 향상
3.1. IAM 관리
- AS-IS
- 개발자마다 IAM User를 생성하여 권한 부여
- IAM Access Key를 Rotate하지 않음
- 권한 부여 방법이 너무 다양했음
- 개발자가 스스로 IAM 권한을 변경할 수 있는 경우도
- AWS 접근 인원이 50+ 이상인데 이를 어떻게 관리해야 하는지 고민
- TO-BE
- AWS IAM Identity Center 사용
- 모두 ECS Task Role만을 사용하도록 함
- 인스턴스 하드코딩 키들 모두 삭제
- 외부 어플리케이션들은 OIDC로 인증하여 Role 부여 (github action pipeline)
- 현재는 IAM User 전혀 생성 X
3.2 DATADOG 활용
- SIEM Investigator로 사용자 행동 확인 가능
- 어떤 사용자가 어떤 API 요청했다!
- 권한 이슈 디버깅으로도 잘 활용 가능
- 미사용되는 Permission 삭제 제안
- “너 이 Role은 15일동안 사용한 적 없어. 삭제할래?” 제안
- 시스템적으로 권한 관리가 유용함
Conclusion
- RUM, Session Replay는 좀 비싸지만 개발자 ↔ 비개발자에게 모두 매우 유용하다
- datadog 헬프를 적극적으로 받아라!!