기록 111

[클라우드 프로그래밍] 13주차

쿠버네티스 로그 관리 개요파드 수가 급격히 증가하면 kubectl logs 명령만으로는 로그를 제대로 관리하기 어렵다. 기업에서는 **수집 후 전달 모델(collect-then-forward)**을 따르는 로그 프레임워크를 사용한다.EFK 스택 구성:Fluentd / Fluent Bit: 컨테이너 로그 수집 (수집기)Elasticsearch: 로그 저장 및 색인Kibana: 로그 시각화 및 검색 프런트엔드쿠버네티스는 각 컨테이너의 로그를 노드의 /var/log/containers/ 디렉터리에 파일로 저장한다. 로그 파일 이름 형식: 파드명_네임스페이스명_컨테이너명_컨테이너ID.log💡 시험 포인트: 로그 파일 이름에는 파드명, 네임스페이스, 컨테이너명이 포함되지만 노드의 IP 주소는 포함되지 않는다.F..

[클라우드 프로그래밍] 12주차

헬름이란?헬름(Helm)은 쿠버네티스용 패키지 관리 도구다. 여러 개의 YAML 매니페스트 스크립트를 하나의 차트(Chart) 단위로 묶어 공개 또는 비공개 리포지터리에 공유하고, 명령 한 번으로 설치/업그레이드/삭제를 관리할 수 있게 해준다.💡 시험 포인트: 헬름 = 쿠버네티스의 패키지 관리자. apt, brew, npm처럼 동작한다고 이해하면 됨.# 리포지터리 추가helm repo add kiamol https://kiamol.nethelm repo update# 차트 검색helm search repo vweb --versions# 차트 기본값 확인helm show values kiamol/vweb --version 1.0.0# 설치 (기본값 오버라이드)helm install --set servic..

[클라우드 프로그래밍] 11주차

파드와 컨테이너의 통신파드는 하나 이상의 컨테이너가 공유하는 네트워크 및 파일 시스템을 제공하는 가상 환경이다. 파드에 속한 컨테이너는 모두 같은 노드에서 동작하며, 모든 컨테이너가 동일한 IP 주소(파드의 IP)를 갖는다. 같은 파드 내부의 컨테이너 간 통신에는 localhost 주소를 사용하며, 각 컨테이너는 서로 다른 포트를 주시해야 한다.💡 시험 포인트: 멀티컨테이너 파드 내부 통신 주소는 localhost 또는 127.0.0.1이다. 외부 IP나 노드 IP가 아님에 주의.spec: containers: - name: sleep image: kiamol/ch03-sleep volumeMounts: - name: data mountPath: /data-rw ..

[클라우드 프로그래밍] 10주차

쿠버네티스에서 애플리케이션에 설정이 전달되는 과정쿠버네티스에서 컨테이너에 설정값을 주입하는 데 쓰는 리소스는 **컨피그맵(ConfigMap)**과 비밀값(Secret) 두 가지이며, 두 리소스 모두 포맷 제한 없이 데이터를 보유할 수 있다.컨피그맵과 비밀값의 데이터는 클러스터 속에서 다른 리소스와 독립적인 장소에 보관된다. 파드 정의에서 이 데이터를 읽어 오도록 할 수 있으며, 데이터가 전달되는 과정에도 다양한 설정이 가능하다. 다른 쿠버네티스 리소스와 마찬가지로 kubectl create 명령을 사용하거나 YAML 정의를 읽어 들여 생성할 수 있다.다른 리소스와 달리 컨피그맵과 비밀값은 스스로 어떤 기능을 하지 않으며, 단지 적은 양의 데이터를 저장하는 것이 목적이다. 리소스는 파드로 전달되어 컨테이너..

[클라우드 프로그래밍] 9주차

1차시 — 파드와 디플로이먼트로 컨테이너 실행하기쿠버네티스는 어떻게 컨테이너를 실행하고 관리하는가컨테이너는 단독으로 동작하지 않고 **파드(Pod)**에 포함되어 동작한다. 우리는 파드를 통해 컨테이너를 관리한다.간단한 파드라면 YAML 파일을 따로 정의하지 않고도 명령행에서 바로 실행할 수 있다.# 컨테이너 하나를 담은 파드를 실행한다kubectl run hello-kiamol --image=kiamol/ch02-hello-kiamol# 파드가 준비 상태가 될 때까지 기다린다kubectl wait --for=condition=Ready pod hello-kiamol# 클러스터에 있는 모든 파드의 목록을 출력한다kubectl get pods# 파드의 상세 정보를 확인한다kubectl describe po..

[클라우드 응용 SW 개발] 13, 14주차

등장하는 서비스들부터 정리하자Azure에서 컨테이너를 다루는 서비스는 크게 세 가지다.서비스 한 줄 요약ACR (Azure Container Registry)내 Docker 이미지를 저장하는 프라이빗 저장소AKS (Azure Kubernetes Service)쿠버네티스를 Azure가 대신 관리해주는 서비스Web App for Containers컨테이너 기반 웹앱을 쉽게 배포하는 PaaS세 개가 독립적으로 쓰이기도 하지만 보통 같이 쓴다.흐름으로 보면 이렇다.코드 작성 → Docker로 이미지 빌드 → ACR에 이미지 push → AKS 또는 ..

[클라우드 응용 SW 개발] 11, 12주차

1. Docker란 무엇인가Docker는 애플리케이션과 그 실행에 필요한 모든 종속성을 컨테이너라는 표준화된 단위로 패키징하여, 어디서든 동일한 환경으로 실행할 수 있게 해주는 오픈소스 플랫폼이다. Docker의 핵심 워크플로우는 단순하다.Dockerfile → (docker build) → Image → (docker run) → Container ↓ (docker push) ↓ Registry (Docker Hub / ECR 등)Dockerfile ..

[클라우드 응용 SW 개발] 9, 10주차

서버리스란?서버리스를 한 마디로 표현하면 "서버는 있는데, 개발자가 신경 안 써도 되는 구조" 다."서버가 없다"는 게 아니라, 클라우드 제공업체가 서버 인프라를 대신 관리해주는 모델이다.개발자는 그냥 코드(함수)만 작성하면 된다.동작 방식을 간단하게 보면 이렇다.1. 개발자가 함수(Function) 형태로 코드를 작성해서 클라우드에 올린다.2. 특정 이벤트(HTTP 요청, DB 변경, 파일 업로드 등)가 발생하면 함수가 자동으로 트리거된다.3. 클라우드가 필요한 컴퓨팅 리소스를 동적으로 할당해서 함수를 실행한다.4. 실행이 끝나면 리소스를 해제하고, 사용한 만큼만 비용이 청구된다.EC2 같은 VM 방식과 비교하면 차이가 명확하다.구분 기존..

Weekly Paper #15

1. Race Condition (경쟁 상태)Race Condition이란?두 개 이상의 스레드가 공유 자원에 동시에 접근할 때, 실행 순서에 따라 결과가 달라지는 문제입니다.재고: 1개스레드 A: 재고 조회 → 1개 확인 → (아직 차감 전)스레드 B: 재고 조회 → 1개 확인 → (아직 차감 전)스레드 A: 재고 차감 → 0개스레드 B: 재고 차감 → -1개 ← 문제 발생!해결 전략 1 - synchronized (Java 내장)JVM 레벨에서 하나의 스레드만 해당 블록에 진입하도록 잠금을 겁니다.public class StockService { private int stock = 1; public synchronized void decreaseStock() { if (sto..

Weekly Paper 2026.06.09

Weekly Paper #14

1. 4가지 주요 보안 공격과 대응 전략① CSRF (Cross-Site Request Forgery)공격 원리피해자가 로그인된 상태에서 악성 사이트가 피해자 브라우저를 이용해 의도하지 않은 요청을 자동으로 전송하는 공격입니다.1. 피해자 → 은행 사이트 로그인 (세션 쿠키 발급)2. 피해자 → 악성 사이트 방문3. 악성 사이트 → 피해자 브라우저로 은행 이체 요청 자동 전송 (브라우저가 세션 쿠키를 자동으로 포함시킴)4. 은행 서버 → 정상 요청으로 인식 → 이체 실행대응 전략CSRF Token 방식: 서버가 예측 불가능한 토큰을 발급하고, 요청 시 이 토큰이 포함되어 있는지 검증합니다.// Spring Security 기본 CSRF 보호 활성화@Configurationpublic class Sec..

Weekly Paper 2026.06.09