목록DevOps (46)
민프

저번 편에서는 CICD 자동배포를 제외한 나머지를 구축하였고,이번에는 아래에서 CICD 자동배포를 구현해보겠습니다.사용자/클라이언트 ↓ (HTTPS, 도메인)AWS Route53 (사전준비) ↓NCP L7 LoadBalancer (Public Subnet, SSL 종단) ↓Github Actions CICD 자동배포 ↓애플리케이션 서버 (Private Subnet, Docker Compose) 이번에 제가 구축할 CI/CD흐름은 아래와 같습니다.로컬 개발개발자가 로컬에서 코드를 수정하고 GitHub main 브랜치에 PUSHGitHub Actions (CI/CD)main 브랜치에 PUSH 이벤트 감지 → GitHub Actions 실행.GitHub Actions Runner가 Bastion..

개발자들이 MVP 제품을 위한 빠르게 개발하기 하려고 처음에 “Public Subnet + 공인 IP”로 인프라를 구축해놓는데 이후 고치지 않으면 보안에 취약인 것은 다들 알고계시죠? 상용 환경에서는 서버를 Private Subnet에 두고, 외부에는 LB만 노출하는 구조가 권장하고 있습니다.AWS에서는 해보았지만, NCP에서는 해본적이 없어서 간단하게 적용해보려고 합니다. 이번 글에서는 NCP 환경에서 Private Subnet 아키텍처를 적용한 과정을 공유합니다. 아키텍쳐 개요사용자/클라이언트 ↓ (HTTPS, 도메인)AWS Route53 (사전준비) ↓NCP L7 LoadBalancer (Public Subnet, SSL 종단) ↓CICD 자동배포 ↓애플리케이션 서버 (Private..

ECS에서 서비스를 운영할 때, Task를 어떤 서브넷에 배치해야 할까요?처음에는 “Public Subnet에 배포하면 더 간단하잖아?“라는 생각이 들 수 있지만,운영 환경에서는 보안성과 안정성을 위해 Private Subnet을 사용하는 것이 권장됩니다. 이번 글에서는 왜 ECS Task를 Private Subnet에 배포해야 하는지,그리고 Private Subnet에서도 인터넷을 사용할 수 있게 하는 NAT Gateway 구성 방법을 정리해보겠습니다.왜 Public Subnet이 아닌 Private Subnet에 ECS를 배포해야 할까?1. 보안성 강화Public Subnet에 배포된 ECS Task는 퍼블릭 IP가 부여되며 외부 인터넷에서 접근이 가능합니다.이는 해킹, 취약점 공격 등 보안 위협에 ..

Bastion Host에 대해서 알아보도록 하겠습니다.1. Bastion Host란?Bastion [ˈbæstiən]. "요새", "보루"를 뜻하는 영어 단어이다. 특히 성형 요새를 의미하는 모양이다. 그러나 자주 사용되지는 않고 이러한 의미로는 Fortress가 압도적으로 많이 쓰인다.- 나무위키, 위키백과, 네이버 사전 Bastion Host는 Private Subnet에 위치한 리소스에 접근할 수 있도록 중간에 배치하는 ‘관문 서버’입니다.외부 네트워크와 내부 네트워크 사이에서 SSH 또는 터널링을 통해 보안된 접근 경로를 제공합니다.2. 왜 Bastion Host가 필요한가?항목일반적인 접근Bastion Host 사용 시RDS 보안퍼블릭 IP 노출됨퍼블릭 IP 없이 내부만 노출보안그룹 설정IP 기..

서비스 운영을 하다 보면 JWT_SECRET, DB_PASS, REDIS_HOST 같은 민감한 설정값을 안전하게 관리해야 합니다.예전에는 .env 파일로 로컬에 숨겨두곤 했지만, 클라우드 인프라에서는 AWS Systems Manager Parameter Store(SSM) 또는 AWS Secrets Manager를 활용하는 것이 안전하고 효율적인 방법입니다. 특히 저는 ECS로 배포를 하면서 .env.dev, .env.prod 등등.. 환경변수와 관련 된 것들을 컨테이너와 같이 올릴 수 없기에 SSM을 선택하여 진행하였습니다. Git Actions CICD를 이용해서 배포를 하고 있어서 Git Actions의 Actions secrets and variables를 사용하여 해보려고 했지만 dev, pr..

1. 도메인 구입 (가비아) 2. Route 53 호스팅 영역 생성AWS > Route 53 > 호스팅 영역 생성도메인 이름: 가비아 도메인 넣기 (ex. example.co.kr)타입: 퍼블릭 호스팅 영역생성 후 -> NS 레코드 4개가 나옴 (ns-xxxx.awsdns-xx.com 등) 3.가비아 도메인에서 네임서버 변경가비아 > 내 도메인 > 네임서버 변경기본 네임서버 -> “사용자 지정 네임서버” 선택Route53이 보여준 NS 레코드 4개 복붙 (마지막 '.'을 제거해주셔야 합니다.)이걸로 가비아 -> Route 53 연결 완료! 주의사항현재 가비아에서 구매한 도메인에서 이미 레코드들이 있었는데 네임 서버를 바꾸게 되면 더이상 가비아의 네임서버에서는 동작하지 않고, Route53을 통해서 동..

무중단 배포란 무엇인가?무중단 배포(Zero Downtime Deployment)란서버를 새 버전으로 배포할 때 기존 서비스에 끊김 없이 사용자에게 지속적으로 서비스를 제공하는 방식입니다. 전통적인 방식처럼 배포 중에 서비스가 잠시 중단되거나 에러가 발생하는 걸 방지하는 목적 입니다.왜 무중단 배포가 필요한가?서비스가 중단되면 사용자 경험은 나빠지고, 트래픽 손실과 매출 손실까지 이어집니다.또한 DevOps와 CI/CD가 기본이 된 지금, 자동화된 안정적인 배포 환경은 필수입니다. (실무에서는 배포하는 동안 다른 개발자들도 서버를 사용할 수 없어서 약간의 개발 딜레이가 발생하여 필수적으로 필요한 부분 같습니다.)항목설명사용성 유지고객의 UX를 해치지 않음 (특히 B2C 서비스는 타격 큼)수익 손실 방지서..

MSA란 무엇이며, 왜 중요할까?MicroService Architecture는 크게 Inner Architecture와 Outer Architecture로 구분할 수 있습니다.위 그림에서 남색 부분은 Inner Architecture의 영역이고, 회색 부분은 Outer Architecture 부분입니다.1. MSA 기본 개념 (Inner Architecture) MSA는 대규모 애플리케이션을 작고 독립적인 서비스들로 분리해 배포하고 운영하는 방식입니다.Monolith vs MSA모놀리식은 하나의 커다란 앱이지만, MSA는 여러 독립 서비스의 모임독립 배포가 가능해 개발, 운영이 유연해지고, 장애도 격리 가능해짐 도메인 중심 분리비즈니스 영역(주문, 결제, 회원 등)을 기준으로 서비스 단위 구성“한 서..

“Lambda에서 발생하는 6MB 초과 오류? Presigned URL로 해결하자!” 문제상황최근 OCR 분석 기능을 Lambda + S3 + SQS 조합으로 구현하던 중 다음과 같은 에러를 마주하게 되었습니다:Request must be smaller than 6291456 bytes for the InvokeFunction operation Lambda invocation failed with status: 413이 문제는 이미지 파일의 크기가 Lambda가 허용하는 최대 요청 바이트 수(6MB) 를 초과한 경우 발생합니다.그렇다면, Lambda를 거치지 않고 S3로 직접 업로드하면 해결됩니다. 이 글에서는 Presigned URL을 사용하여 클라이언트에서 직접 S3로 파일을 업로드하는 방법을 소개..

원래 항상 Slack을 이용하여 서부 내부적인 알림을 보냈었는데회사에서 works를 이용하자는 제안에 이번엔 works를 통하여 알림을 보내려고 한다.앱추가https://dev.worksmobile.com/kr/console/openapi/v2/app/list/view https://auth.worksmobile.com/login/login?accessUrl=http%3A%2F%2Fdev.worksmobile.com%3A80%2Fconsole%2Fopenapi%2Fv2%2Fapp%2Flist%2Fview auth.worksmobile.comBot 추가 단체 채팅방에 봇을 사용하려면 Bot 정책 - 조직/그룹, 1:N 메세지방 초대 기능을 체크해야합니다. Bot 연동https://admin.worksmob..