Server-side
서버
백엔드 개발과 서버 운영 기록.
서버
AWS, Azure, GCP 를 서비스 이름표로 외우지 않고 고르는 법
세 클라우드의 서비스 대응표, 계정과 권한 구조의 차이, 요금 할인 모델, 서울 리전, 프리티어를 정리하고, 모바일 개발자 입장에서 Firebase 가 얹힌 GCP 를 포함해 상황별로 무엇을 먼저 볼지 적었습니다.
서버
Jenkins 는 아직 쓸 만한가, GitHub Actions 와 나란히 놓고 봤습니다
CI/CD 가 무엇인지부터 Jenkins 의 controller 와 agent 구조, Jenkinsfile 과 shared library, LTS 와 Java 요구 사항, 플러그인 관리 부담, JCasC 와 Kubernetes agent 를 정리하고, GitHub Actions, GitLab CI, Bitbucket Pipelines 와 비교해 어디서 Jenkins 가 여전히 맞는지 안드로이드 빌드 예제와 함께 적었습니다.
서버
Kafka 는 메시지 큐가 아니라 로그입니다: 파티션, 컨슈머 그룹, 복제까지 Kotlin 으로 따라가기
Apache Kafka 를 커밋 로그 모델로 풀어서, 토픽과 파티션과 offset, 프로듀서의 acks 와 멱등성, 컨슈머 그룹과 리밸런싱, ISR 복제, 전달 보장과 트랜잭션, KRaft 전환, share group 까지 Kotlin 코드와 CLI 로 정리하고 RabbitMQ, SQS 와 언제 무엇을 고를지 적었습니다.
서버
Kubernetes 는 컨테이너를 돌리는 도구가 아니라 원하는 상태를 맞추는 도구였습니다
Kubernetes 가 왜 필요한지, 컨트롤 플레인과 노드의 구조, 선언형 모델과 조정 루프, Deployment 와 Service 같은 핵심 오브젝트, Spring Boot 앱용 매니페스트 예제, 관리형 서비스와 쓰지 않아도 되는 경우까지 안드로이드 개발자의 시점으로 정리했습니다.
서버
Docker 는 가벼운 VM 이 아니라 격리된 프로세스입니다
컨테이너가 namespace 와 cgroup 위에서 어떻게 동작하는지, 이미지 레이어와 overlayfs, Dockerfile 작성 요령, Docker Engine 에서 containerd 와 runc 로 이어지는 구조, Compose, Docker Desktop 라이선스와 대안, Apple silicon 멀티 아키텍처 빌드, Spring Boot 멀티 스테이지 예제까지 정리했습니다.
서버
JWT 냐 세션이냐, 웹 서비스라면 저는 세션부터 봅니다
서버 세션과 JWT 를 상태 저장 위치, 폐기, 확장, 쿠키 속성, XSS 와 CSRF 관점에서 비교하고, 짧은 access token 과 refresh token rotation, 안드로이드에서의 토큰 보관과 OkHttp Authenticator 까지 적었습니다.
서버
웹 서버, WAS, API 서버는 제품 이름이 아니라 맡은 일입니다
웹 서버와 WAS 와 API 서버가 각각 무엇을 하는지, 리버스 프록시와 로드 밸런서와 API 게이트웨이는 어디에 끼는지 정리했습니다. 국내 기업형 WEB-WAS-DB 구성과 AJP 보안 이슈, Spring Boot 내장 서버 이후 경계가 흐려진 현재 구성까지 다룹니다.
서버
REST 로 충분한 줄 알았는데, 모바일 앱은 프로토콜을 하나씩 더 쓰게 됩니다
TCP, UDP 와 TLS 1.3 위에서 HTTP/1.1, HTTP/2, HTTP/3 이 어떻게 달라졌는지 보고, 그 위에 올라가는 REST, GraphQL, gRPC, WebSocket, SSE, MQTT, 푸시를 요청-응답, 서버 푸시, 양방향 스트리밍으로 나눠 언제 무엇을 고를지 정리했습니다.
서버
서버 응답은 왜 XML 에서 JSON 으로 넘어왔을까
SOAP 과 XSD 가 중심이던 XML 시대에서 REST 와 JSON 으로 옮겨 온 이유를 데이터 모델, 용량, 파싱 보안, 도구 측면에서 같은 payload 로 비교하고, XML 이 지금도 쓰이는 곳과 JSON 의 약점, 바이너리 포맷까지 정리했습니다.
서버
Supabase 와 Firebase, 모바일 개발자가 백엔드를 고르는 기준
Supabase 와 Firebase 를 데이터 모델, 인증, 실시간, 스토리지, 서버리스 함수, 요금, 락인, 모바일 SDK 로 나눠 비교하고, 최근 달라진 점과 선택 기준을 적었습니다.
서버
RDBMS 와 NoSQL, 데이터 모양보다 접근 패턴이 먼저입니다
관계형 데이터베이스와 NoSQL 의 차이를 데이터 모델, 일관성, 확장 방식, 모델링 방식으로 나눠 보고, 요즘 두 계열이 서로 닮아 가는 흐름과 워크로드별로 무엇을 먼저 고려할지 적었습니다.
서버
MySQL, Oracle, PostgreSQL 은 같은 SQL 을 써도 같은 데이터베이스가 아닙니다
MySQL(MariaDB), Oracle, PostgreSQL 의 라이선스, MVCC, 기본 격리 수준, upsert 와 JSON 문법, 벡터 검색을 나란히 놓고 최신 버전과 인기 지표, 어떤 상황에 무엇을 고를지까지 적었습니다.
서버
백엔드 언어를 고를 때 문법보다 먼저 봐야 할 것: JS, JVM, PHP, Python, Ruby, Go, Rust
JS, JVM, PHP, Python, Ruby, Go, Rust 서버가 요청을 처리하는 방식의 차이를 같은 엔드포인트 코드로 살펴보고, 버전 현황과 선택 기준을 적었습니다.
서버
Hono, Express, Fastify, Elysia, NestJS 중 무엇을 쓸까, 같은 엔드포인트로 비교해 봤습니다
Web Standard 위의 Hono 와 Elysia, Node http 위의 Express 와 Fastify, 구조를 강제하는 NestJS 를 같은 GET 엔드포인트로 나란히 놓고 런타임, 검증, DI, 성능 수치 읽는 법, 버전 상태와 선택 기준을 적었습니다.
서버
서버 모노레포 구성하기: Gradle 멀티 프로젝트, convention plugin, 영향 범위 빌드와 CODEOWNERS
모노레포와 폴리레포의 트레이드오프를 정리하고, Kotlin/Spring 서버를 Gradle 멀티 프로젝트로 구성할 때 쓰는 build-logic convention plugin, 버전 카탈로그, 컴포짓 빌드, 빌드 캐시와 구성 캐시, 변경된 모듈만 다시 빌드하는 방식, CODEOWNERS 를 예제 프로젝트로 확인합니다.
서버
CQRS 와 이벤트 소싱: 읽기 모델과 프로젝션, 최종적 일관성, 아웃박스 패턴, 쓰지 말아야 할 때
명령과 조회의 모델을 나누는 CQRS, 상태 대신 이벤트를 저장하는 이벤트 소싱, 읽기 모델과 프로젝션 재구축, 최종적 일관성, 이벤트 발행을 신뢰할 수 있게 만드는 트랜잭셔널 아웃박스를 Kotlin 코드와 애니메이션으로 확인하고 Fowler 의 경고까지 짚습니다.
서버
Spring Boot 와 Ktor 비교: auto-configuration 과 플러그인, DI, 라우팅, 코루틴, 엔진
Kotlin 서버 프레임워크인 Spring Boot 3.4 와 Ktor 3.0 을 구성 철학, 요청 처리 파이프라인, 의존성 주입, 라우팅 방식, 코루틴 지원, 서버 엔진, 생태계, 멀티플랫폼 클라이언트 관점에서 공식 문서 기준으로 비교하고 선택 기준을 살펴봅니다.
서버
도메인 주도 설계 입문: 바운디드 컨텍스트와 컨텍스트 맵, 엔티티·값 객체·애그리거트, Kotlin 으로 보는 불변식
DDD 의 전략적 설계(바운디드 컨텍스트, 유비쿼터스 언어, 컨텍스트 맵 관계)와 전술적 설계(엔티티, 값 객체, 애그리거트, 리포지토리, 도메인 이벤트, 도메인 서비스)를 Evans 의 레퍼런스와 Vernon 의 애그리거트 설계 규칙, Kotlin 코드로 풀어 봅니다.
서버
Spring WebFlux 정리: 이벤트 루프, Mono 와 Flux, backpressure, 그리고 MVC 와의 선택 기준
Spring MVC 의 스레드 모델과 WebFlux 의 이벤트 루프 모델의 차이, Reactive Streams 의 backpressure, Mono 와 Flux, WebClient 와 R2DBC, 이벤트 루프를 막는 블로킹 호출과 BlockHound, Kotlin 코루틴 지원, 공식 문서가 제시하는 도입 기준을 Spring Boot 3.1 기준으로 살펴봅니다.
서버
서버 아키텍처의 의존 방향: 계층형, 헥사고날, 어니언, 클린 아키텍처와 Kotlin 패키지 구조
계층형 아키텍처가 만드는 의존 방향과 한계, Cockburn 의 헥사고날(포트와 어댑터), Palermo 의 어니언, Martin 의 클린 아키텍처가 공유하는 의존성 규칙을 비교합니다. Spring 에 묶이지 않는 Kotlin 패키지 구조와 테스트 이점, 과하게 느껴지는 경우를 함께 봅니다.
서버
모놀리스, 모듈러 모놀리스, 마이크로서비스: 데이터 소유권과 사가, 분리 시점, 스트랭글러 피그 이전
한 덩어리로 배포하는 모놀리스와 모듈 경계를 세운 모듈러 모놀리스, 서비스마다 DB 를 갖는 마이크로서비스의 구조 차이와 비용을 비교합니다. 서비스별 DB, 사가의 코레오그래피와 오케스트레이션, 네트워크 실패와 관측, 콘웨이 법칙, 분리 시점, 스트랭글러 피그 이전까지 다룹니다.