N° 01 — 목록
'분류 전체보기' (197)
-
Cloud & Infrastructure/KubernetesKubernetes - 02. architecture
클러스터의 두뇌와 손 — 컨트롤 플레인과 노드가 어떻게 갈리는가한 클러스터에서 노드 3대가 동시에 재부팅됐다. Pod들은 전부 죽었고, 운영자는 "클러스터가 죽었다"고 보고했다. 하지만 정확히 무엇이 죽은 걸까? 재부팅된 노드 위의 kubelet은 다시 살아나자마자 apiserver에 "내가 돌아왔다, 내 담당 Pod들을 다시 띄워 달라"고 물었고, 90초 안에 Pod들이 복구됐다. 죽은 건 Pod였지 클러스터가 아니었다.이 사례가 보여주는 건 Kubernetes의 가장 중요한 분리 — 결정하는 층(컨트롤 플레인)과 실행하는 층(노드) — 이다. 이 분리를 이해하면 "무엇이 죽었는지, 그래서 무엇이 복구되는지"를 정확히 읽을 수 있다. 이 글은 그 두 층이 정확히 어떤 부품으로 이뤄지고 어떻게 통신하는지..
-
Cloud & Infrastructure/KubernetesKubernetes - 01. overview
Kubernetes는 컨테이너를 실행하지 않는다2014년 즈음, 한 팀이 매일 새벽 서버 50대에 SSH로 접속해 같은 설정을 복사하고 있었다. 컨테이너는 이미 있었다. Docker가 "한 번 빌드하면 어디서든 돌아간다"고 약속했고, 실제로 그랬다. 그런데 팀은 여전히 밤을 새웠다. 컨테이너를 실행하는 일은 해결됐는데, "어디에, 몇 개를, 어떻게 계속 띄워 둘까"를 결정하는 일은 사람이 하고 있었다.이 글이 푸는 질문은 하나다. Kubernetes는 정확히 이 "결정"의 어느 부분을 가져갔는가? 그리고 왜 그 방식(선언적 API + 조정 루프)이 컨테이너를 더 빨리 띄우는 것보다 훨씬 근본적인 변화였는가?Kubernetes가 "실행"하지 않는다는 것의 의미흔한 오해부터 꺼내자. Kubernetes는 컨..
-
Backend Development/Spring BootSpringBoot - 10. deployment
500MB JAR에서 80MB 바이너리로 — GraalVM native image와 컨테이너 배포Spring Boot 애플리케이션을 서버리스(AWS Lambda)에 배포하려 한다. JVM 웜업에 3초, 첫 요청에 5초가 걸린다. 콜드 스타트가 치명적인 서버리스 환경에서 이것은 사용할 수 없는 수준이다. GraalVM native image로 빌드하면 — 시작 시간이 50ms로 줄고, 메모리 사용량이 1/5로 감소한다.이 글은 Docker 컨테이너 빌드, GraalVM AOT 컴파일, layered JAR, graceful shutdown, 그리고 Spring Boot 4.0의 AOT 강화를 풀어간다. (Spring Boot Reference - Container Images)컨테이너 빌드 — Docker..
-
Backend Development/Spring BootSpringBoot - 09. config profile
개발 환경에서는 H2, 운영에서는 PostgreSQL — 외부 설정과 프로파일 관리같은 JAR을 개발과 운영에 그대로 배포해야 한다. 개발에서는 H2 인메모리 DB를, 운영에서는 PostgreSQL을 써야 한다. 코드를 고치지 않고 — 설정만 바꿔서. Spring Boot의 외부 설정(externalized configuration)과 프로파일(profile)이 이것을 가능하게 한다.이 글은 프로퍼티 소스 계층, @ConfigurationProperties, 멀티 프로파일, 환경 변수 매핑, 그리고 비밀 관리(secrets management) 패턴을 풀어간다. (Spring Boot Reference - External Configuration)프로퍼티 소스 계층 — 17개의 우선순위Spring Boo..
-
Backend Development/Spring BootSpringBoot - 08. actuator
프로덕션 서버가 살아있는지 어떻게 알 수 있는가 — Actuator와 모니터링프로덕션 서버가 응답하지 않는다. 메모리가 부족한가? DB 연결이 끊겼는가? 스레드가 고갈됐는가? 로그를 봐도 원인이 안 보인다. Spring Boot Actuator가 켜져 있었다면 — GET /actuator/health로 헬스 상태를, GET /actuator/metrics로 메모리/스레드/DB 풀 상태를 즉시 확인할 수 있었다.이 글은 Actuator의 엔드포인트, 헬스 체크, 메트릭, 그리고 Prometheus + Grafana 통합을 풀어간다. (Spring Boot Reference - Actuator)Actuator란 — 운영 도구 모음spring-boot-starter-actuator를 추가하면 프로덕션 준비 기..
-
Backend Development/Spring BootSpringBoot - 07. security
모든 API가 401을 반환할 때 — Spring Security 기초와 필터 체인Spring Boot에 spring-boot-starter-security를 추가했다. 모든 API가 즉시 401 Unauthorized를 반환한다 — Spring Security가 기본적으로 모든 요청에 인증을 요구하기 때문이다. "Hello World" API도 접근할 수 없다.이 글은 Spring Security의 기본 동작, SecurityFilterChain 구성, 폼 로그인, JWT, OAuth2 클라이언트 설정을 풀어간다. (Spring Boot Reference - Security)Spring Security의 기본 동작 — "모든 것을 차단"spring-boot-starter-security를 추가하면:기본..