🏆 인기 랭킹

공개 노트

AWS 비용 절감 실전 노하우

EC2 비용 절감: Spot 인스턴스와 오토스케일링 활용EC2를 계속 온디맨드로만 사용하면 요금이 크게 나옵니다. Spot 인스턴스를 사용하면 최대 90%까지 절약할 수 있어요. ASG(오토스케일링 그룹)를 같이 쓰면 Spot이 회수돼도 자동으로 온디맨드로 전환해 다운타임 없이 운용할 수 있습니다. hcl resource aws_autoscaling_group web_asg { name = web-asg launch_configuration = aws_launch_configuration.web.name max_size = 10 min_size = 2 desired_capacity = 4 mixed_instances_policy { instances_distribution { on_demand_base_capacity = 1 spot_allocation_strategy = lowest-price } } }

설탕사과
설탕사과

Spring Boot 앱을 ECS에 GitHub Actions로 자동 배포하기

AWS 리소스 준비 개요 Spring Boot 앱을 ECS에 자동 배포하려면, 여러 AWS 리소스를 미리 만들어야 해요. 대표적으로 보안 그룹, 로그 그룹, IAM 역할, ECR 저장소, ECS 클러스터, 태스크 정의, 그리고 서비스가 필요합니다. 각각의 리소스가 어떻게 연결되는지 이해하면 전체 흐름이 명확해져요. 보안 그룹 생성 및 포트 허용 ECS 서비스가 외부에서 접속될 수 있도록 보안 그룹을 만들고, 필요한 포트를 엽니다. AWS CLI를 사용해 아래와 같이 수행합니다. bash aws ec2 create-security-group --group-name ecs-demo-sg ... aws ec2 authorize-security-group-ingress --group-id sg-ID --protocol tcp --port 80 --cidr 0.0.0.0/0 ... aws ec2 authorize-security-group-ingress --grou

설탕사과
설탕사과

AWS ECS와 Lambda를 결합한 하이브리드 서버리스 아키텍처

하이브리드 구조의 기본 아이디어 전통적 서버리스인 Lambda는 짧은 작업, ECS는 지속적 과업에 각각 강점이 있습니다. 이 둘을 함께 쓰면, 꾸준한 작업과 갑작스러운 트래픽에 모두 유연하게 대응할 수 있습니다. 언제 쓰면 좋은가? 백그라운드 작업을 컨테이너 환경에서 안정적으로 처리할 때 갑작스런 트래픽이 몰릴 땐 ECS로 충분히 대응하기 어려울 때 ECS를 과도하게 할당하지 않고 비용 최적화를 원할 때 Lambda와 ECS에서 거의 같은 코드베이스를 활용하고 싶을 때 활용 예시 실시간 데이터 처리 파이프라인: ECS는 꾸준히 스트림을 처리, Lambda는 갑자기 데이터가 몰릴 때 추가로 대응 PDF 즉시 생성: ECS에서 대량 작업, Lambda로 단건 작업 처리 이미지/영상 처리 대기열 관리 주요 구성 요소와 역할 SQS Queue: 모든 작업이 일단 여기에 들어와 대기 ECS (Fargat

설탕사과
설탕사과

Spring Boot 애플리케이션을 Amazon ECS에 배포하기

Amazon ECS란 무엇인가요? Amazon ECS는 컨테이너를 손쉽게 관리할 수 있는 AWS의 서비스입니다. 개발자는 서버 설정이나 오케스트레이션 복잡도를 줄이고, 애플리케이션을 자동으로 배포·확장·모니터링할 수 있습니다. 준비물 체크 배포를 시작하려면 다음이 필요합니다: Java & Spring Boot 프로젝트 Docker(이미지 빌드용) AWS CLI(명령어 실행/이미지 푸시용) Spring Boot Docker 이미지 만들기 Spring Boot 프로젝트를 준비했다면, 아래와 같이 Dockerfile을 이용해 이미지를 빌드합니다. 다중 단계(Docker multi-stage)를 활용하면 이미지가 더 작아집니다. dockerfile FROM bellsoft/liberica-runtime-container:jdk-21-musl as builder WORKDIR /app COPY .mvn/ .mvn COPY mvnw pom.xml

설탕사과
설탕사과

Amazon ECS의 ECScape 취약점 핵심 정리

ECScape 취약점이란? ECScape는 Amazon ECS(Elastic Container Service)에서 발견된 새로운 보안 취약점으로, 공격자가 한 컨테이너에서 다른 컨테이너의 AWS 자격 증명(IAM)을 훔칠 수 있는 문제입니다. 특히 여러 컨테이너가 같은 EC2 인스턴스에서 함께 동작할 때 심각한 영향을 미칩니다. 취약점의 작동 방식 ECScape는 ECS 내부의 알려지지 않은 프로토콜을 악용해서 실행 중인 컨테이너끼리의 경계를 뚫고, 낮은 권한의 컨테이너가 높은 권한의 IAM 자격 증명을 탈취할 수 있게 만듭니다. 이를 통해 공격자는 권한을 올리거나 시스템 전체에 접근할 수 있습니다. 왜 심각한 문제인지 컨테이너는 기본적으로 서로 격리되는 것이 특징이지만, ECScape로 인해 이 격리 보장에 금이 갑니다. 만약 높은 권한이 필요한 IAM 역할을 탈취하면, S3, Lambda, 자동화 시스템까지 연쇄적으로 공격당할 가능성이 있습니다.

설탕사과
설탕사과

EC2, ECS, EKS: AWS의 주요 컴퓨트 서비스 한눈에 보기

EC2: 클라우드에서 직접 서버 다루기 EC2는 AWS에서 제공하는 가상 컴퓨터를 직접 빌리는 서비스입니다. 사용자가 운영체제, 소프트웨어 설치, 서버 보안까지 모두 직접 관리할 수 있어서, 기존 방식과 비슷한 환경이 필요할 때 적합합니다. 서버 크기와 성능도 자유롭게 선택할 수 있지만, 모든 관리는 사용자가 책임집니다. ECS: 컨테이너 앱 쉽게 배포하기 ECS는 Docker 컨테이너를 관리해주는 서비스로, 앱과 필요한 라이브러리, 설정을 하나로 묶어 손쉽게 배포할 수 있습니다. 인프라 직접 관리(ECS EC2 타입)와 서버리스처럼 아예 관리가 필요 없는 Fargate 타입 중 선택할 수 있습니다. AWS 서비스들과 연동이 잘 되고, Kubernetes처럼 복잡하게 배울 필요 없이 바로 쓸 수 있습니다. EKS: 대규모 컨테이너 오케스트레이션 EKS는 Kubernetes를 AWS에서 대신 관리해주는 서비스입니다. Kubernetes는 다양한 컨테이너 앱을

설탕사과
설탕사과

FastAPI와 Docker, AWS ECS로 머신러닝 모델 배포하기

단계별 ML 모델 배포 여정 머신러닝 모델을 실제 서비스로 만들려면, 단순히 학습만으로 끝나지 않고 다양한 배포 과정을 거쳐야 합니다. 이 글에서는 scikit-learn으로 만든 모델을 FastAPI로 감싸고, Docker로 컨테이너화해 AWS ECS(Fargate)를 통해 클라우드에 올리는 일련의 과정을 소개합니다. 모델 학습 및 저장 먼저 머신러닝 모델을 훈련시킨 후 파일로 저장합니다. 여기서는 유명한 아이리스 데이터셋을 사용해 랜덤 포레스트 분류기를 만들었고, 결과를 iris_model.pkl로 저장했습니다. python train_model.py from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier import joblib X, y = load_iris(return_X_y=True) model = RandomForestClassifier(

설탕사과
설탕사과

Express.js 백엔드, Docker, AWS ECS, MongoDB로 클라우드에 배포하기

필요한 준비물 Express.js 백엔드를 배포하려면 Node.js와 npm이 설치돼 있어야 합니다. AWS CLI 설정과 Docker 설치도 필요하며, AWS 계정, 그리고 MongoDB Atlas 계정(혹은 직접 호스팅할 MongoDB)이 있어야 합니다. Express.js 앱 기본 구조 프로젝트 폴더를 만들고 express, mongoose 패키지를 설치한 후, 아래와 같이 기본 서버 코드를 작성하면 됩니다. // index.js const express = require(express); const mongoose = require(mongoose); const app = express(); const PORT = process.env.PORT 3000; app.use(express.json()); mongoose .connect(process.env.MONGO_URI, { useNewUrlParser: true, useU

설탕사과
설탕사과

Amazon ECS에 Spring Boot 어플리케이션 배포 한눈에 보기

Amazon ECS란 무엇인가요? Amazon ECS는 컨테이너 관리와 오케스트레이션을 자동으로 처리해주는 AWS 서비스입니다. 도커 이미지를 쉽게 배포, 관리, 확장할 수 있어서 많은 기업들이 선택하고 있습니다. 준비사항 Spring Boot와 Java로 개발한 애플리케이션, Docker 파일, 그리고 AWS CLI(명령줄 도구)가 필요합니다. AWS CLI는 인증 정보를 미리 세팅해야 다양한 AWS 자원을 사용할 수 있습니다. Spring Boot 애플리케이션을 도커로 빌드하기 Spring Boot 프로젝트를 아래와 같이 Docker 이미지로 패키징할 수 있습니다. 멀티 스테이지로 이미지를 최적화하는 Dockerfile 예시입니다. dockerfile FROM bellsoft/liberica-runtime-container:jdk-21-musl as builder WORKDIR /app COPY .mvn/ .mvn COPY mvnw pom.xml

설탕사과
설탕사과

EKS 노드에서 삭제된 이미지를 ECR로 복구하는 방법

문제 상황: ECR에서 이미지가 삭제된 경우 개발 환경에서 사용 중인 이미지가 ECR에서 삭제되어, 파이프라인 재빌드도 불가능할 때가 있습니다. 그 이미지가 남아있는 유일한 곳이 EKS 노드라면, 직접 노드에서 이미지를 복구해야 합니다. 준비 환경 요약 아래 환경에서 작업을 진행합니다. EKS 클러스터: 1.30.3 Kubectl: 1.30.1 Containerd: 1.7.11 Runc: 1.1.11 EKS 노드에 접속하는 방법 EKS 노드에 원격으로 접근하려면 AWS 콘솔에서 세션 매니저를 사용하면 편리합니다. 인스턴스의 connect 옵션을 누르면 바로 접속할 수 있습니다. 노드에서 이미지 확인하기 관리자로 권한을 얻은 후, nerdctl 명령어로 노드에 저장된 이미지를 조회할 수 있습니다. bash sudo -s nerdctl images 원하는 이미지를 찾으면, 해당 태그와 레포지토리 주소를 확인하세요.

설탕사과
설탕사과

Karpenter로 EKS 클러스터 자동 확장 쉽게 시작하기

Kubernetes 확장의 어려움과 기존 방식의 한계 Kubernetes를 운영하면서 트래픽이 증가하면 자동으로 노드를 늘려야 하는데, 기존 Cluster Autoscaler 방식은 미리 정해둔 노드 그룹이 필요하고, 설정이 복잡하며 확장 속도가 느립니다(수 분 소요). 특히 다양한 EC2 인스턴스 유형이 필요할 때마다 직접 노드 그룹을 만들어야 해서 관리가 번거롭고 자원 활용도가 떨어집니다. Karpenter란 무엇인가? Karpenter는 AWS가 개발하고 CNCF에 기증한 오픈소스 자동 노드 프로비저닝 컨트롤러입니다. 기존 방식과 다르게, Karpenter는 Kubernetes에서 필요할 때 EC2 인스턴스를 직접 생성해주어, 노드 그룹 없이도 다양한 인스턴스 유형을 자동 선택하고 빠르게 노드를 늘릴 수 있습니다. 비용 최적화, 다양한 워크로드 지원, Kubernetes와 깊은 통합 등이 특징입니다. Karpenter의 주요 동작 방식 Karpenter

설탕사과
설탕사과

Amazon Q CLI와 MCP 서버로 데이터베이스 다루기

Amazon Q CLI 설치 및 세션 시작 Amazon Q CLI를 사용하려면 공식 문서에 따라 설치 후, Builder ID로 인증을 완료해야 합니다. 설치가 끝나면 q chat 명령어로 세션을 시작할 수 있습니다. MCP 서버와 연동하기 Amazon Q CLI는 MCP 서버(예: Postgres)를 통해 외부 데이터베이스와 연결할 수 있습니다. 연결할 때는 다음 형식의 설정 파일이 필요합니다. json { mcpServers: { postgres: { command: npx, args: -y, @modelcontextprotocol/server-postgres, postgresql://USERNAME:PASSWORD@HOST:5432/DBNAME } } } 특수문자가 포함된 비밀번호는 URL 인코딩이 반드시 필요합니다. 데이터베이스 및

설탕사과
설탕사과

AWS FinOps Dashboard 설치와 활용 요약

AWS FinOps Dashboard란? AWS FinOps Dashboard는 터미널에서 사용할 수 있는 AWS 비용 및 리소스 관리 도구입니다. Python과 Rich 라이브러리로 개발되었으며, AWS 계정의 서비스별 비용, EC2 인스턴스 상태, 예산 사용 현황 등을 한눈에 보여줍니다. 데이터를 CSV, JSON 등으로 쉽게 내보낼 수 있습니다. 설치 과정 준비하기 이 도구를 설치하려면 우선 Python이 PC에 있어야 합니다. Python이 없다면 공식 사이트( 다운로드 후 설치하세요. 그다음, AWS CLI도 필요하니, aws cli가 없다면 공식 가이드( 참고해 설치하세요. AWS 자격 증명 설정 AWS CLI 설치 후, 계정의 액세스 키와 시크릿 키, 리전, 출력

설탕사과
설탕사과

스팟 인스턴스와 마감 기한 최적화 전략 요약

클라우드 컴퓨팅과 스팟 인스턴스 클라우드 서비스는 기업들이 자체 서버 대신 AWS, Azure, GCP 등에서 컴퓨팅 자원을 임대해 쓰도록 도와줍니다. 여기에는 온-디맨드와 스팟 인스턴스 두 가지 자원 타입이 있는데, 스팟 인스턴스는 놀고 있는 자원을 매우 저렴한 가격에 빌려주지만 언제든 회수당할 수 있어 불확실성이 큽니다. 스팟 인스턴스의 특징과 불확실성 스팟 인스턴스는 예측하기 힘든 가용성과 선점(회수) 이슈가 있습니다. 실제 실험에서는 가용 영역마다 인스턴스 사용 가능성이 크게 달랐습니다. 한편 비용 자체는 안정적이어서 예산 관리에는 도움이 됩니다. 마감 기한이 있는 작업의 과제 추천 서비스처럼 얼마 안에 결과가 반드시 나와야 하는 작업은 단순히 싼 자원이 아니라, 마감 기한을 맞추는 것이 중요합니다. 이를 위해서는 작업에 필요한 시간, 남은 시간, 그리고 상태 전환에 드는 추가 비용을 고려해 정책을 설계해야 합니다. Greedy Policy:

설탕사과
설탕사과

AWS VPC 패킷의 인터넷 여행, 쉽게 이해하기

이 글에서는 AWS의 EC2에서 구글 같은 인터넷 사이트까지 패킷이 어떻게 이동하는지 초보자도 알기 쉽게 설명해 드릴게요. 각 단계에서 어떤 일이 벌어지는지 하나씩 따라가 볼까요? 1. EC2에서 출발하는 패킷 먼저, EC2(가상 서버) 안에서 데이터(패킷)가 인터넷으로 나가려고 합니다. 여러 개의 문과 지도를 통과해야 하는데, 각 문마다 허가받아야 밖으로 나갈 수 있어요. 2. 첫 번째 문: 보안 그룹(Security Group) 패킷이 처음 만나는 문이 바로 보안 그룹입니다. 보안 그룹은 건물 출입문처럼, 어떤 데이터가 들어오고 나갈 수 있는지 규칙을 정해놔요. 규칙에 맞으면 패킷이 통과할 수 있습니다. 3. 두 번째 문: 네트워크 ACL(Network ACL) 다음에는 네트워크 ACL이라는 문을 만나요. ACL은 일정한 구역(서브넷)의 출입문 같은 역할을 합니다. 한번 들어올 때마다 신분을 다시 확인해서 더 까다로워요. 여기서 통과해야 다음 단계로 갈

설탕사과
설탕사과

AWS + Terraform 실전 베스트 프랙티스

실수 방지: prevent_destroy로 자원 삭제 막기 Terraform에서 중요한 리소스가 실수로 삭제되지 않게 하려면, 아래처럼 prevent_destroy 옵션을 설정하세요. 예를 들어 RDS, S3와 같이 삭제되면 큰일 나는 리소스에 꼭 적용해야 합니다. hcl lifecycle { prevent_destroy = true } 이렇게 하면 적용 전 한 번 더 생각할 수 있게 도와줍니다. 모든 리소스에 태그 달기 인프라에 태그를 안 달면, 나중에 누가 만들었는지 비용이 왜 발생하는지 아무도 몰라 어렵습니다. Terraform의 default_tags를 설정해서 자동으로 태그를 붙이면 비용 추적과 관리가 쉬워져요. hcl provider aws { region = ap-south-1 default_tags { tags = { Owner = devops Environment = p

설탕사과
설탕사과

개발자를 위한 MacBook Air M1/M2/M3/M4 전격 비교

애플 M 시리즈 칩의 진화와 개발자 환경 애플의 M1, M2, M3, 그리고 최신 M4 칩은 각각 개발 환경에서의 성능, 효율, 그리고 기능성에 중요한 변화를 가져왔어요. M1으로 시작된 혁신은 컴파일 속도, 배터리, 멀티 모니터 사용성 등 개발자가 원하는 진짜 작업 환경을 지속적으로 개선해왔습니다. 멀티 모니터 지원: 협업과 생산성의 관건 M1과 M2는 외부 모니터가 1대만 지원되어 다중 디스플레이가 필요한 개발자에게는 다소 제한적이었습니다. M3부터는 노트북 덮개를 닫을 경우 2개의 외부 모니터가 연결 가능해져 업무 효율이 크게 향상됐고, M4에서는 최초로 2개의 외부 모니터와 내부 스크린을 동시에 쓸 수 있게 되어 최대 3개 화면을 적극 활용할 수 있어요. SSD 성능: M1의 놀라운 속도와 최신 모델의 변화 내장 SSD 속도만큼은 M1이 아직도 최고에요. 읽기/쓰기 약 3,000 MB/s로 모든 세대를 앞섰는데, M2와 M3, M4에서는 설계 변경으로

설탕사과
설탕사과

AWS Timestream for InfluxDB: 핵심 정리

AWS Timestream for InfluxDB란? AWS에서 완전히 관리되는 InfluxDB(오픈소스 2.x 버전) 서비스를 제공합니다. 복잡한 운영에서 벗어나 InfluxDB의 API, 쿼리(Flux/InfluxQL), Telegraf 에이전트, 토큰 등을 손쉽게 사용할 수 있습니다. Managed Grafana 연동도 지원해 멋진 시각화가 가능합니다. 주요 활용 분야 이 서비스는 다양한 영역에서 사용할 수 있습니다. 예를 들어 IoT 센서 데이터, 앱 모니터링, 금융 티커, 제품 사용자 분석 등 시간에 따라 변화하는 데이터 처리에 적합합니다. 배포 옵션 3가지 AWS Timestream for InfluxDB는 세 가지 방식으로 배포할 수 있습니다. 단일 AZ 인스턴스: 가장 저렴하고 단순하지만, 장애 조치가 없습니다. 테스트나 개발용, 짧은 장애가 허용되는 환경에 적합합니다. 멀티 AZ(대기 인스턴스 포함): 메인과 대기 인

설탕사과
설탕사과