모든 포스트

테라폼 실전 강좌 #7 IAM 코드화: 인스턴스 역할, 최소 권한, GitHub Actions OIDC
4 분 소요

테라폼 실전 강좌 #7 IAM 코드화: 인스턴스 역할, 최소 권한, GitHub Actions OIDC

aws_iam_policy_document 데이터 소스로 신뢰 정책과 권한 정책을 작성하고, 인스턴스 프로파일로 EC2에 역할을 부여해 SSM Session Manager 접속과 시크릿 읽기를 완성합니다. 최소 권한을 리소스 ARN 단위로 좁히는 방법과, GitHub Actions가 액세스 키 없이 AWS 역할을 맡는 OIDC 연동까지 코드로 만들겠습니다.

Entra ID 자동화 #5 PIM과 감사: 상시 관리자 없애기, 로그와 액세스 리뷰
5 분 소요

Entra ID 자동화 #5 PIM과 감사: 상시 관리자 없애기, 로그와 액세스 리뷰

트랙 마지막 편으로 권한과 감사를 다룹니다. 상시 관리자 권한을 자격 부여와 시간제 활성화로 바꾸는 PIM의 구조, Graph의 roleEligibilityScheduleRequests와 셀프 활성화 API, 역할 할당 가능 그룹과 조합하는 패턴, 감사 로그와 로그인 로그를 API로 수집해 이상 징후에 알림을 거는 법, 접근 권한의 정기 재검토를 자동화하는 액세스 리뷰, 그리고 트랙 전체의 도입 순서 정리까지 다룹니다.

UUID vs bigint 기본 키: 성능 차이의 실체와 uuidv7
4 분 소요

UUID vs bigint 기본 키: 성능 차이의 실체와 uuidv7

기본 키 논쟁의 단골 주제인 UUID vs bigint를 실측 가능한 근거로 정리합니다. bigint가 기본값인 이유(크기·삽입 지역성·조인 비용), UUID v4가 인덱스에 무작위로 삽입되어 쓰기와 캐시 효율을 떨어뜨리는 원리, 시간순 정렬로 그 문제를 대부분 해소한 uuidv7과 PostgreSQL 18 내장 함수, uuidv7의 남는 트레이드오프(생성 시각 노출·16바이트), 그리고 내부 bigint + 외부 UUID 병행 설계까지 다루겠습니다.

테라폼 실전 강좌 #6 시크릿 관리: SSM vs Secrets Manager, write-only 인수
4 분 소요

테라폼 실전 강좌 #6 시크릿 관리: SSM vs Secrets Manager, write-only 인수

시크릿 보관소로 SSM Parameter Store와 Secrets Manager를 비용과 기능으로 비교해 선택 기준을 세우고, 테라폼 1.11의 ephemeral 리소스와 write-only 인수로 DB 비밀번호가 plan과 state 어디에도 남지 않는 구성을 만듭니다. 애플리케이션이 시크릿을 런타임에 읽는 경로까지 설계해 지난 편의 평문 문제를 구조적으로 풀겠습니다.

Entra ID 자동화 #4 조건부 액세스: 정책을 코드로 관리하기
5 분 소요

Entra ID 자동화 #4 조건부 액세스: 정책을 코드로 관리하기

로그인 순간의 방어선인 조건부 액세스를 자동화 관점에서 다룹니다. 신호·결정·적용이라는 정책의 if-then 구조, Graph API의 conditionalAccess 엔드포인트로 정책을 CRUD하는 법, 정책을 소스 관리와 리뷰를 거쳐 배포하는 policy-as-code 흐름, 새 정책을 반드시 report-only로 먼저 돌려야 하는 이유, 비상 계정을 모든 정책에서 제외하는 원칙, 실수로 지운 정책의 30일 복원까지 다룹니다.

N+1 쿼리 문제: 증상, 탐지, 해결까지
4 분 소요

N+1 쿼리 문제: 증상, 탐지, 해결까지

ORM을 사용하는 서비스가 느려지는 가장 흔한 원인인 N+1 쿼리를 다룹니다. 목록 하나에 쿼리가 101번 나가는 구조가 만들어지는 원리(지연 로딩), 애플리케이션 로그와 pg_stat_statements의 calls로 탐지하는 법, JOIN·IN 일괄 로딩·ORM의 즉시 로딩 옵션이라는 세 가지 해법, 그리고 "화면이 필요로 하는 데이터를 쿼리 수가 아니라 모양으로 설계한다"는 예방 원칙까지 다루겠습니다.

Rust에서 JSON 다루기: serde 역직렬화 실전 정리
5 분 소요

Rust에서 JSON 다루기: serde 역직렬화 실전 정리

Rust JSON 처리의 표준인 serde를 실전 순서로 정리합니다. derive 한 줄로 시작하는 구조체 역직렬화, 필드가 없을 수도 있는 현실 JSON을 받는 Option과 default, API의 camelCase를 잇는 rename_all, 구조를 모르는 JSON을 더듬는 Value, 형태가 여러 개인 응답을 받는 enum과 untagged, 그리고 에러 메시지에서 위치를 읽는 법까지 다루겠습니다.

테라폼 실전 강좌 #5 RDS와 S3: 데이터 계층 코드화와 안전장치
4 분 소요

테라폼 실전 강좌 #5 RDS와 S3: 데이터 계층 코드화와 안전장치

DB 서브넷 그룹과 보안 그룹 체이닝으로 격리된 PostgreSQL RDS를 프라이빗 서브넷에 만들고, gp3 스토리지와 백업, prevent_destroy 안전장치까지 설정합니다. 정적 자산용 S3 버킷을 퍼블릭 차단과 함께 구성하고, 임시로 변수에 둔 DB 비밀번호가 state에 평문으로 남는 문제를 확인해 다음 편의 과제로 넘기겠습니다.

Entra ID 자동화 #3 그룹 설계: 동적 그룹, 그룹 기반 라이선스, 액세스 패키지
5 분 소요

Entra ID 자동화 #3 그룹 설계: 동적 그룹, 그룹 기반 라이선스, 액세스 패키지

접근 관리의 단위인 그룹을 자동화 관점에서 설계합니다. 보안 그룹과 Microsoft 365 그룹의 용도 구분, 속성 기반 규칙으로 멤버십이 자동 계산되는 동적 그룹과 P1 라이선스 요건, 규칙 문법과 처리 지연이라는 운영 특성, 그룹에 라이선스를 붙여 입퇴장을 자동화하는 그룹 기반 라이선스, 역할 할당 가능 그룹의 보안 경계, 그리고 셀프서비스 접근 요청을 제품화한 액세스 패키지까지 다룹니다.

PostgreSQL upsert 정석: ON CONFLICT 사용법과 함정
4 분 소요

PostgreSQL upsert 정석: ON CONFLICT 사용법과 함정

"있으면 갱신, 없으면 삽입"을 경쟁 조건 없이 처리하는 ON CONFLICT를 다룹니다. SELECT 후 INSERT 방식이 동시성에서 깨지는 이유, DO NOTHING과 DO UPDATE의 사용법, EXCLUDED로 새 값을 참조하는 법, 충돌 판정 대상(유니크 제약)을 명시해야 하는 이유, 갱신이 필요 없을 때도 행이 잠기는 비용, MERGE와의 관계, 그리고 시퀀스가 건너뛰는 현상까지 다루겠습니다.

PyO3로 파이썬 확장 모듈 만들기: maturin 빌드부터 wheel 배포까지
4 분 소요

PyO3로 파이썬 확장 모듈 만들기: maturin 빌드부터 wheel 배포까지

Polars, Ruff, pydantic이 증명한 경로인 "파이썬의 병목 함수만 Rust로"를 직접 밟아 봅니다. maturin new로 시작하는 프로젝트 구조, #[pyfunction]과 #[pymodule]로 Rust 함수를 파이썬에 노출하는 법, maturin develop의 개발 사이클, 타입 변환(str·list·dict)의 규칙, free-threaded 파이썬 시대와의 궁합, 그리고 wheel 빌드와 PyPI 배포까지 다루겠습니다.

테라폼 실전 강좌 #4 ALB와 Auto Scaling: launch template, 대상 그룹, 스케일링 정책
4 분 소요

테라폼 실전 강좌 #4 ALB와 Auto Scaling: launch template, 대상 그룹, 스케일링 정책

단일 EC2 인스턴스를 로드밸런서 뒤의 Auto Scaling 그룹으로 승격합니다. 인스턴스 정의를 launch template으로 옮기고, ALB와 대상 그룹, 리스너를 연결한 뒤 CPU 타깃 추적 스케일링 정책까지 겁니다. 검증용 단일 인스턴스를 코드에서 지워 IaC의 리소스 제거 흐름을 확인하고, 브라우저로 첫 응답을 받아보겠습니다.