Notes on infrastructure and operations.
문제를 만난 상황, 확인한 근거, 그리고 최종적으로 고른 방법을 함께 적었습니다.
Latest notes
Kubernetes requests와 limits 적정값 잡기
유휴 자원에 돈을 쓰지 않으면서 워크로드를 안정적으로 유지하는 CPU, 메모리 값을 고르는 방법입니다.
장애 상황에서 실제로 도움이 되는 관측성
돈을 쓸 가치가 있는 신호, 남겨 둘 대시보드, 그리고 초기 5분 안에 텔레메트리가 답해야 하는 질문을 정리했습니다.
성능을 해치지 않고 AWS 비용을 줄이는 순서
아키텍처를 건드리기 전에 컴퓨팅, 스토리지, 데이터 전송에서 낭비를 걷어내는 반복 가능한 점검 순서입니다.
AWS CloudWatch basics
Course notes on CloudWatch metrics, alarms, logs, and the querying tools around them, taken while studying for DOP-C02.
Review: Software Architecture & Design of Modern Large Scale Systems (2)
Course notes on gathering requirements before design: actors, use cases, user flows, and the quality attributes that shape the system.
Review: Software Architecture & Design of Modern Large Scale Systems (1)
Course notes on what a software architecture actually describes, the architectural drivers behind it, and how requirements get classified.
지연 시간 디버깅: 범위를 좁혀 나가는 절차
사용자가 체감하는 지연에서 시작해 특정 큐, 락, 의존성까지 범위를 좁혀 가는 절차를 정리했습니다.
가상 면접 사례로 배우는 대규모 시스템 설계 기초 8장: URL 단축기 설계
301과 302 중 무엇을 쓸지부터 해시 함수 선택과 충돌 처리까지, 단축기 설계를 정리했습니다.
가상 면접 사례로 배우는 대규모 시스템 설계 기초 7장: 분산 시스템을 위한 유일 ID 생성기 설계
multi-master, UUID, ticket server를 차례로 걸러내고 snowflake 방식으로 64비트를 나눠 쓰는 설계입니다.
가상 면접 사례로 배우는 대규모 시스템 설계 기초 6장: 키-값 저장소 설계
CAP 안에서 무엇을 포기할지 정하고, 파티셔닝·다중화·일관성·버저닝을 차례로 설계했습니다.
가상 면접 사례로 배우는 대규모 시스템 설계 기초 5장: 안정 해시 설계
서버를 늘릴 때마다 캐시가 전부 빠지는 재배치 문제를, 해시 링과 가상 노드로 k/n까지 줄이는 방법입니다.
가상 면접 사례로 배우는 대규모 시스템 설계 기초 4장: 처리율 제한 장치의 설계
처리율 제한이 DDoS에 실제로 어떤 역할을 하는지 따져보고, 다섯 가지 알고리즘과 분산 환경 설계를 정리했습니다.
[졸업프로젝트] NewsFit 개발 회고
3계층 구조 위에 웹 스크래핑과 추천 시스템을 붙이며, 어디에서 성능이 막혔고 어떻게 풀었는지 적었습니다.
Kubernetes 프로브 실전 정리
liveness, readiness, startup 프로브가 각각 무엇을 통제하는지, 그리고 잘못 쓰면 어떤 식으로 무너지는지 정리했습니다.
AWS Cloud Club Hongik에서 실습 환경 구성하기
매주 트러블슈팅 실습을 돌리기 위해 Organization과 StackSets로 계정을 한데 모으고, 비용과 권한을 중앙에서 통제한 방법입니다.
AWS SysOps Administrator - Associate 취득 후기 (+ 취득 꿀팁!)
실습 유형이 빠진 뒤의 SOA 시험 난이도와 출제 범위, 자격증 네 개를 준비하며 정리한 요령입니다.
[KO]CloudFormation StackSets를 이용한 다중 계정 환경 관리!
관리 계정의 암호화된 AMI로 OU 안 여러 계정에 Auto Scaling Group을 배포하며, StackSets 출력값을 중앙에 모으고 Custom Resource로 빈틈을 메웠습니다.
[EN]Multi-account environment with CloudFormation StackSets
Deploying Auto Scaling Groups across an OU from an encrypted AMI, centralizing StackSets outputs with Lambda-backed custom resources.
AWS re:Post web crawler with AWS Serverless services
Tracking new AWS re:Post questions with a Lambda crawler, DynamoDB for dedupe, EventBridge Scheduler, and Slack notifications.
AWS Solutions Architect - Professional 취득 후기
왜 Professional까지 갔는지, 자격증이 실제로 무엇을 남겼는지 솔직하게 적었습니다.
Terraform의 aws_iam_openid_connect_provider에 관하여
thumbprint_list를 매번 직접 구해야 하는 불편함을 파고들다가 provider 쪽 PR까지 따라간 기록입니다.
[AWS IAM] Hands-on: Github Actions에 임시 자격 증명 사용하기
OIDC로 Github Actions에 액세스 키 대신 임시 자격 증명을 쓰도록 바꾸고, CloudTrail에서 실제로 확인했습니다.
[AWS IAM] Identity Federation & Cognito Basics
IAM User를 만들지 않고 외부 사용자에게 권한을 주는 방법을 SAML과 Cognito 흐름으로 나눠 정리했습니다.
[AWS IAM] STS Basics
임시 자격 증명이 발급되는 흐름과, External ID 없이 크로스 계정 접근을 열면 생기는 confused deputy 문제입니다.
[AWS CloudWatch] CloudWatch Agent와 stress를 통해 스왑 메모리 사용량 지표 추출하기
기본 지표에 없는 스왑 사용량을 CloudWatch Agent로 수집하고, stress로 부하를 줘 값이 올라가는지 확인했습니다.
[Kubernetes] ContainerD Basics
쿠버네티스가 dockershim을 걷어낸 배경과, ctr·crictl로 containerd를 다루는 방법입니다.
[AWS Network] Hands-on: Site-to-Site VPN Connection
VPC와 온프레미스를 IPsec으로 잇는 이유부터 터널 두 개와 라우팅 설정까지 직접 구성해봤습니다.
[AWS CodeDeploy] CodeDeploy Basics
EC2, ASG, Lambda, ECS 각각에 CodeDeploy가 어떻게 배포하는지와 배포 전략의 차이입니다.
[AWS IAM] IAM Basics
User·Role·Policy가 각각 어디에 붙는지부터 Permission Boundary와 Access Analyzer까지 IAM 구성 요소를 정리했습니다.
AWS Advanced Networking - Specialty 취득 후기
3개월간 어떻게 공부했고 시험에서 무엇이 나왔는지, Advanced Networking 취득 과정을 적었습니다.
[AWS Network] Route 53 Resolver & DHCP option set
VPC 안에서 DNS 쿼리가 Private Hosted Zone, VPC DNS, Public DNS 순으로 풀리는 과정과 DHCP 옵션 셋의 역할입니다.
Build with AI United 2024 행사 참여 후기
Gemini와 Gemma를 다룬 Hands-on·Tech Talk 세션에서 받은 인상을 적었습니다.
[AWS Network] Transitive and non-transitive scenarios
VPC Peering, PrivateLink, Site-to-Site VPN에서 연결이 전이되지 않는 이유를 시나리오별로 정리했습니다.
AWS EC2, EBS: 스왑 메모리에 대한 실험과 모범 사례
스왑은 인스턴스 스토어에만 두라는 문서의 근거를 확인하려고 EBS I/O와 네트워크 지표를 재봤고, 실험은 실패했습니다.
DayCarat 인프라 구조 설계: 내가 한 달 만에 설계부터 구현까지 성공적으로 마칠 수 있었던 이유
비용·기간·확장성이 동시에 걸린 요구사항을 하나씩 뜯어보며, 서버리스 위주로 인프라를 설계한 과정입니다.
Github Actions: ssh-aciton IPv6 지원
public IPv4 과금이 시작되면서 IPv6로 SSH를 붙이려 했지만 액션이 지원하지 않아, 직접 지원을 추가한 이야기입니다.
2023 AWS Rookie Championship 참여 후기
백엔드에서 클라우드로 관심이 옮겨간 과정과, 대회를 준비하며 무엇을 배웠는지 적었습니다.
[Terraform] state locking을 위한 s3, ddb 설정하기
여러 사람이 동시에 terraform apply를 할 때 state가 덮이는 과정을 짚고, S3와 DynamoDB로 잠금을 걸었습니다.
[AWS] AWS 사용요금을 매일 문자로 받아보기
Lambda가 Cost Explorer에서 이번 달 사용액을 읽어 SNS로 문자를 보내도록 만들고, 필요한 권한을 정리했습니다.
[서버] Github Actions: 다양한 명령 내리기
docker-compose.yaml을 매번 손으로 맞추던 방식을 버리고, 워크플로우가 필요한 파일만 가져오도록 바꿨습니다.
[AWS] VPC Migration
기본 VPC에 그대로 있던 DB를 프라이빗 서브넷으로 옮기며, 개발 서버부터 마이그레이션을 시험한 기록입니다.
[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (3)
HTTP API로는 매핑 템플릿을 손댈 수 없다는 벽과, Step Functions의 응답을 API Gateway로 돌려주는 문제를 다뤘습니다.
[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (2)
Lambda Authorizer가 X-Slack-Signature와 맞지 않는다는 걸 알고, Step Functions로 구조를 다시 짰습니다.
[AWS SAM] Slack API 슬랙 봇 서버리스로 마이그레이션 도전기 (1)
EC2에 띄워둔 슬랙 봇을 서버리스로 옮기기로 하고, CloudFormation 문법을 모르는 상태에서 SAM을 붙잡은 기록입니다.
AWS Community Day 2023 후기
서버리스 트랙 다섯 세션을 듣고, 그때까지 알던 서버리스가 얼마나 좁았는지 적었습니다.
[Spring Boot] 로컬에서 application.yaml 에 .env 환경변수 주입하기
프로덕션과 같은 형태의 application.yaml을 유지하면서, 로컬에서만 EnvFile로 변수를 주입하는 방법입니다.
[Docker, AWS, Spring] docker-compose시 환경변수 전달하고 스프링부트 application.yaml에서 사용하기
application.yaml을 이미지에 넣어 배포하면 환경변수가 공개된다는 걸 깨닫고, EC2의 .env로 주입 시점을 옮겼습니다.
[Slack API] 슬랙 API를 통한 요청 가이드 - 외부 요청 차단 (2)
Signing Secret으로 HMAC 서명을 검증해서, 슬랙이 보낸 요청만 통과시키는 필터를 만들었습니다.
[Slack API] 슬랙 API를 통한 요청 가이드 (1)
Slack 앱 생성부터 Flask 서버 연결, 슬래시 커맨드 등록까지 슬랙과 서버가 요청을 주고받는 과정을 따라갑니다.
[스프링부트] 배포환경에서 에러로그 Slack에 보내기
배포 환경에서 서버에 접속하지 않고도 에러 로그를 보려고, logback으로 log.error()를 Slack에 흘려보냈습니다.
[스프링부트] 스마트 택배 API ( sweet-tracker ) 기능 구현하기
스마트택배 API를 붙이면서 API 키 관리, 응답 매핑, 설정 분리를 어떻게 했는지 정리했습니다.
[스프링 부트] 효율적 주문 관리 시스템
주문 상태를 저장하는 세 가지 방식을 비교하고, 상태를 별도 테이블로 분리한 이유를 적었습니다.
[스프링 부트] '주문번호' 서비스 구현하기 (Jpa사용)
구독·구매·판매마다 다른 주문번호를 쓰지 않도록, 포맷을 통일한 주문번호 발급 서비스를 JPA로 구현했습니다.