목록전체 글 (115)
middlemoon
시작계기최근까지 개발팀에서 EC2 인스턴스 한 대에 Docker Compose로 서비스 6개(관리자 페이지, 개발자 포털, 웹, 인증, API, 실시간 채팅)를 전부 올려서 운영해왔다. 새 서비스를 추가하거나 트래픽이 몰릴 때 순간적으로 대응하기 전까지는 문제는 없었다. docker-compose up -d로 컨테이너 하나 더 띄우는 거야 쉽지만, "채팅 서버만 트래픽이 몰리니 딱 그것만 2배로 늘려줘" 같은 요청 앞에서는 손이 멈췄다.EC2 인스턴스 자체를 늘리거나, 내부적으로 컨테이너를 복제하고 앞단에 뭔가를 또 붙여야 하는데, 지금 구조로는 전부 수작업이었다.이 한계가 명확해지면서 "이제는 오토스케일링이 되는 구조로 가야 하지 않겠냐"는 이야기가 나왔고, 그 방향 자체는 팀 차원의 요청이었다. ..
EKS에 앱 하나 띄우고 Jenkins 파이프라인 연동하는 일, 가이드나 튜토리얼만 따라 할 땐 참 쉬워 보였습니다. 하지만 직접 Terraform으로 하나씩 코드를 짜고, 권한을 분리하며 클러스터를 세워보니… 진짜 문제는 terraform apply 성공 이후부터 터져 나왔습니다.IAM과 K8s RBAC 사이의 권한 레이어 혼선부터 EKS 20.x 모듈의 보안 기본값, 그리고 Jenkins 컨테이너 내부 계정의 권한 매핑까지.이번 글은 단순히 구축 순서만 나열한 튜토리얼이 아닙니다. ‘일단 되게만 만드는 구축’을 넘어, 프로덕션 수준의 트레이드오프를 고민하고 AccessDenied 에러와 싸우며 배운 EKS/IaC/CI-CD 실전 트러블슈팅의 기록입니다. 아키텍처( Architecture ) GitH..
안녕하세요. 오늘은 좋은 소식이 있어 글을 공유합니다. 3월 14일부로 AWS SAA 자격증 취득에 성공하였습니다. 저의 준비했던 과정기를 공유하고 싶어 글을 올리게 되었네요. DevOps 엔지니어로 전향한 지 어느덧 6개월정도 흐르고,본격적으로 자격증을 준비한지는 2월 중순부터 준비하였습니다.실무에서 DevOps에 대한 업무를 하며 인프라의 '조각'들은 익숙해졌지만 전체적인 '그림'에 대한 갈증이 있었습니다. 단순한 자격증 취득을 넘어, AWS의 광범위한 서비스를 체계적으로 설계할 수 있는 Solution Architect로서의 기반을 다지기 위해 SAA-C03 도전을 시작했습니다. 학습 방법 - AWS Udemy 강의 처음에 Udemy의 Stephane Maarek 님의 AWS 강의..
먼저 ECS를 사용하기 앞서, ECS 개념을 조금 더 짚고 넘어가보자 합니다. ECS는 AWS에서 제공하는 컨테이너 오케스트레이션 서비스입니다. 주요 특징으로는 서버 관리 불필요 (Fargate): 유저님이 사용하신 Fargate 모드는 실제 서버(EC2)를 직접 관리하거나 패치할 필요 없이, 컨테이너를 실행할 CPU와 메모리 사양만 정해주면 AWS가 알아서 인프라를 할당합니다.유연한 확장성: 트래픽이 늘어나면 컨테이너 개수(Task)를 자동으로 늘려 서비스 중단을 막아줍니다.AWS 서비스와의 완벽한 통합: ECR에서 이미지를 땡겨오고, IAM으로 권한을 관리하며, 곧 만드실 로드밸런서(ALB)와 유기적으로 연결됩니다. 이전 시간 AWS ECR 생성을 이어서, ECS 쪽 관련된 설정부분을 확인..
AWS ECR은 Amazon Elastic Container Registry의 줄임말로,Docker 컨테이너 이미지를 저장·관리·배포하기 위한 AWS의 관리형 컨테이너 이미지 레지스트리입니다. draw.io로 나타낸 도식화입니다. 먼저 VPC는 기존 테스트용 VPC가 있습니다.하나의 Region안에 EC2를 생성했던 곳에서 ECR Repository를 생성해주었습니다. hello-world라는 퍼블릭한 이미지를 ECR를 거쳐 이름을 변경합니다. 그 과정은 아래와 같이 정리했습니다. 이미지 푸쉬 push 를 하기위해서는 이미지를 우선 Registry로부터 가져오게됩니다. 이미지는 물론 Public 한, 누구나 외부에서 접근이 가능한 이미지들을 가져올 수 있도록 합니다. 정책 추가 terrafo..
최근 회사 클라우드 인프라를 Terraform 기반으로 관리할 준비를 하면서,AWS 리소스(VPC, EC2, ALB, 보안그룹)를 모듈 단위로 IaC화 하는 작업을 했다. 처음에는 단순히 EC2 하나 만들면 되겠거니 했는데, 막상 Terraform으로 전체를 구성해보니실제 AWS 콘솔에서 클릭으로 하던 모든 작업을 코드로 관리할 수 있다는 점이 굉장히 강력했다.이번 과정에서 구축한 리소스는 다음과 같다. Internet ↓ (80/443)[ ALB ] — HTTPS Listener(443, ACM 인증서 적용) │ ├─ 80 → 443 Redirect Listener │ ↓ (8080)[ Target Group ] → [ EC2 Instance ] 외부 요청은 ALB로 유입80..
이번 쿠팡사태와 관련하여 보안이 날이 갈수록 더욱 중요해진다는것을 체감한다. 잘 짜여진 코드와, 인프라가 있어도 보안에 취약하게 되면 아무것도 아니라는 사실을 깨닫게되는 요즘이다. https://m.boannews.com/html/detail.html?tab_type=1&idx=140661 [쿠팡 해킹] ‘방치된 권한’과 ‘죽은 관제’...890억 보안 투자 쿠팡, 기본에 뚫렸다국내 최대 이커머스 기업 쿠팡에서 3370만건의 개인정보 유출 사고가 단순 해킹이 아닌 ‘총체적 인재’라는 정황이 드러나고 있다. 연간 900억에 육박한 보안 예산과 200명이 넘는 전담 인력을 운m.boannews.com 회사에서 나온 주제로 우리의 시스템에도 영향이 있지않을까?라는 질문에서부터 시작하여 그 끝은 AWS에서 대..
회사에서의 첫번째 과제를 성공적으로 마치고, 두번째 과제를 할당받아 프로젝트 회고를 하고자 한다.진행했던 프로젝트의 구조의 도식화는 아래와 같다. Point 1 [외부 Jenkins 서버(Domain: 회사도메인.ne.kr)] │ SSH (22/tcp) ▼ [JenkinsEC2 = Bastion 역할 (Public Subnet, IP: 13.125.211.15)] │ SSH (22/tcp, 사설 IP) ▼ [WebEC2 (Private Subnet, IP: 192.168.100.170)] 1. WEB EC2 app.jar, app.log 삭제 -> rm -rf app.jar / rm -rf app.log 2. ps -ef | g..
회사에서의 첫 과제이자 클라우드 엔지니어의 발돋움(?)이며 그동안 했던 과제들을 기록해보고자 올리려한다. AWS 서버를 처음들어가보기도 하고, 이것저것 만지고, 롤백하며 부딪힌 결과 작은 프로젝트를 쟁취했음에 즐거움을 느낀 하루이다. 먼저 AWS의 구성도이다. VPC 구성은 한개 , 퍼블릭 서브넷과 프라이빗 서브넷을 각각 구성하였다. 퍼블릭 서브넷에 LB를 만들어 프라이빗에 트래픽을 전송할 수 있도록 생성해주었다. Bastion을 하나 두어, 외부 도메인에서 WEB EC2까지 SFTP 파일로 전송되게끔 하는 과정이다. (보안그룹은 최소 권한만 부여한다) 1. VPC 생성 2. Subnet 생성 3. IGW 생성 4. IGW VPC (Attach) 5. 라우팅 테이블 생성 6. Pu..
답안 ) class Solution { public String solution(String my_string, int n) { StringBuilder sb = new StringBuilder(my_string.length() * n); for(char c : my_string.toCharArray()){ for(int i = 0; i 해설 ) StringBuilder 객체 만들기초기 용량(capacity)을 예상 결과 길이만큼 미리 확보하기 — 여기서 예상 길이는 my_string의 각 문자를 n번 반복하니 my_string.length() * n. -> StringBuilder sb = new StringBuilder(my_s..