| 127 |
MSA 환경에서 SAGA 패턴과 2PC 패턴를 통해 트랜잭션 일관성 보장하기 |
MSA, SAGA, 2PC, 보상 트랜잭션 |
| 126 |
확정할 수 없는 모종의 네트워크 에러/지연 문제를 안전하게 서비스하기 |
MSA, 네트워크 |
| 125 |
토스 SLASH 22, 애플 한 주가 고객에게 전달되기 까지 |
MSA |
| 124 |
MSA 기초 |
MSA |
| 123 |
카프카(Kafka)의 특징은 무엇이고, 왜 사용하고, 기본 아키텍처는 어떻게 구성될까? |
카프카, 메시지 큐 |
| 122 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 10장. 알림 시스템 설계 |
아키텍처, 가상면접 |
| 121 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 7장. 분산 시스템을 위한 유일 ID 생성기 설계 |
아키텍처, 가상면접 |
| 120 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 3장. 시스템 설계 면접 공략법 |
아키텍처, 가상면접 |
| 119 |
LazyConnectionDataSourceProxy 의 커넥션 획득 지연 방법 |
스프링 |
| 118 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 2장. 계략적인 규모 측정 |
아키텍처, 가상면접 |
| 117 |
Redis가 제공하는 RedLock 알고리즘 간단히 살펴보기 |
Redis, 동시성, 분산락, RedLock |
| 116 |
Redis 분산 락(Distribution Lock)을 구현하여 동시성 해결하기 |
Redis, 동시성, 분산락 |
| 115 |
토스 SLASH 23, 은행 최초 코어뱅킹 MSA 전환기(feat. 지금 이자 받기) |
토스 Slash, MSA |
| 114 |
MySQL 레플리케이션 바이너리 로그 기록 타입 (Row, Statement, Mixed) |
데이터베이스, 레플리케이션 |
| 113 |
글로벌 트랜잭션 (feat. GTID) |
데이터베이스, 트랜잭션 |
| 112 |
MySQL 레플리케이션 복제 동기화 방식 (비동기, 반동기) |
데이터베이스, 레플리케이션 |
| 111 |
Elastic Search 역 인덱스(Inverted Index) 구조 살펴보기 |
데이터베이스, 인덱스 |
| 110 |
✒️ 카카오테크 부트캠프에서 찾아낸 나만의 효과적인 프로그래밍 학습법 |
회고, 카카오, 카테부 |
| 109 |
Grafana, Prometheus, SpringBoot Actuator 기반 모니터링 환경 구축하기 |
Grafana, Prometheus, 모니터링 |
| 108 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 1장. 사용자 수에 따른 규모 확장성 |
아키텍처, 가상면접 |
| 107 |
어노테이션 기반 DI 컨테이너 프레임워크 구현하기 |
스프링, DI |
| 106 |
지금부터 내가 가져야 할 학습 방향성과 태도 |
회고 |
| 105 |
데이터베이스 분산 스토리지를 위한 파티셔닝과 샤딩 |
데이터베이스, 파티셔닝, 샤딩 |
| 104 |
Redis Pub/Sub 을 사용한 분산 환경에서 로컬 캐시 동기화 |
Redis, 캐시, 스프링 |
| 103 |
스프링 페이지네이션에서 발생한 Latency 의 원인과 커버링 인덱스 생성을 통한 문제 해결기 |
Spring, MySQL, 인덱스 |
| 102 |
MySQL 인덱스 레인지 스캔을 통한 쿼리 성능 개선기 |
Spring, MySQL, 인덱스 |
| 101 |
어노테이션 기반 Spring MVC 프레임워크 구현하기 |
MVC, 스프링 |
| 100 |
✒️ 팀 프로젝트에서 발견한 진정한 의미의 함께 성장하기 |
회고, 카테부, 카카오 |
| 99 |
HTTPS 의 SSL 기반 암호화, 복호화 통신 과정은 어떻게 이루어질까? |
네트워크, HTTP |
| 98 |
AJAX 기반 레거시 MVC 프레임워크 구현하기 |
MVC, JSP, 스프링 |
| 97 |
OSI 7계층의 물리, 데이터 링크 계층(1~2계층) |
네트뤄크, OSI |
| 96 |
OSI 7계층의 네트워크, 전송, 애플리케이션 계층 (3,4,7 계층) |
네트뤄크, OSI |
| 95 |
레거시 DAO 를 리팩토링하며 JDBC 라이브러리 구현하기 |
JDBC, JdbcTemplate, Dao |
| 94 |
Nginx로 로드밸런싱 환경을 구축해 트래픽 분산시키기 |
Nginx, 로드밸런싱 |
| 93 |
프로세스 및 쓰레드 동기화를 위한 여러 상호배제 기법 (mutex, semaphore, monitor) |
운영체제 |
| 92 |
스프링부트 애플리케이션 run 메소드가 실행되기까지의 동작원리 |
톰켓, DispatchverServlet |
| 91 |
데이터베이스 클러스터링 인덱스와 세컨더리 인덱스 |
데이터베이스, 인덱스 |
| 90 |
자바 리플렉션 (Java Reflection) 다루기 |
JAVA, 리플렉션 |
| 89 |
스프링 트랜잭션 동기화와 추상화 (feat. TransactionManager) |
데이터베이스, 트랜잭션 |
| 88 |
HTTP 웹 서버를 직접 구현하여 프로토콜 스펙을 이해해보자! |
HTTP, WAS |
| 87 |
MySQL 8.0 레플리케이션 동작 과정과 아키텍처 구성 방식 |
데이터베이스, 레플리케이션, MySQL |
| 86 |
MySQL 에서 B+ Tree 기반 인덱스로 데이터를 스캔하는 방식 (인덱스 레인지 스캔) |
데이터베이스, 인덱스 |
| 85 |
쿼리 튜닝을 위한 HDD 와 SSD 의 순차 I/O 와 랜덤 I/O |
데이터베이스, 인덱스 |
| 84 |
트랜잭션의 전파(propagation) 속성과 추상화 인터페이스 |
데이터베이스, 트랜잭션 |
| 83 |
서블릿 컨테이너의 프론트 컨트롤러 등장 배경, 공통 요청 처리방식 |
서블릿, 톰켓 |
| 82 |
트랜잭션내에 커넥션을 점유하는 외부 API 요청 분리를 통한 TPS 개선기 (feat. JPA OSIV) |
스프링, HikariCP, JPA, OSIV |
| 81 |
Jenkins 와 Nginx 를 활용한 Blue/Green 배포 환경 구축하기 |
Jenkins, CI/CD, Nginx, 블루그린 |
| 80 |
Jenkins 의 파이프라인 기반 배포 자동화 환경 구축 구축하기 |
Jenkins, CI/CD |
| 79 |
MySQL 네임드 락으로 분산 환경에서의 동시성 이슈를 해결해보자! |
MySQL, 네임드락, 동시성 |
| 78 |
무중단 배포 아키텍처의 다양한 배포전략 (Blue/Green, Rolling, Canary) |
무중단배포, 블루그린, 롤링, 카나리 |
| 77 |
Slf4j MDC(Mapped Diagnostic Context) 로 요청별로 식별 가능한 맥락 남기기 |
Spring, 로깅 |
| 76 |
DB 레플리케이션 환경에서 DataSource 라우팅이 안되는 이슈 해결기 😤 (feat. JPA OSIV) |
Spring, OSIV, JPA |
| 75 |
MySQL 8.0 레플리케이션과 스프링부트 DataSource 라우팅을 통한 부하 분산 |
Spring, MySQL |
| 74 |
서버 성능 최적화를 위한 성능 테스트(Performance Test) 환경 구축 |
스프링, 성능개선 |
| 73 |
스프링 로컬 캐시와 TTL 을 구현한 외부 서빙 API 요청 최적화 |
캐시, 스프링 |
| 72 |
JPA 비관적 락(Pessimistic Lock) 을 사용한 동시성 이슈 해결기 |
Spring, 동시성 |
| 71 |
고가용성과 확장성을 확보하기 위한 아키텍처 전략 |
고가용성, 아키텍처 |
| 70 |
고가용성과 확장성을 위한 데이터베이스 레플리케이션(DB Replication) |
고가용성, 아키텍처, 레플리케이션 |
| 69 |
고가용성과 확장성을 위한 데이터베이스 클러스터링(DB Clustering) |
고가용성, 아키텍처, 클러스터링 |
| 68 |
JPA 낙관적 락과 비관적 락으로 엔티티에 대한 동시성 이슈 해결하기 |
Spring, 동시성 |
| 67 |
MySQL 8.0 공유 락(Shared Lock) 과 배타 락(Exclusive Lock) |
Spring, 동시성, MySQL |
| 66 |
경쟁 상태의 2가지 패턴 - Read-Modify-Write, Check-Then-Act |
Spring, 동시성 |
| 65 |
자바 불변 클래스 |
JAVA |
| 64 |
데이터베이스 인덱스 B+ Tree 구조는 왜 조회 쿼리 성능이 빠를까? |
데이터베이스, 인덱스 |
| 63 |
Redis 를 활용하여 Refresh 토큰 접근속도 개선하기 |
Redis, 인증/인가 |
| 62 |
자바 객체의 동일성(identity)와 동등성(equality) |
JAVA, 동일성 |
| 61 |
자바의 EnumMap은 무엇이고, 왜 HashMap 보다 성능이 더 빠른가? |
JAVA, ENUM, HashMap |
| 60 |
자바 Enum 타입, 그거 어떻게 사용하는건데 🤷♂️ |
JAVA |
| 59 |
JDBC 에서 데이터베이스 커넥션 풀 다루기 (feat. JDBC Driver, DataSource, HikariCP) |
Spring, DBCP |
| 58 |
HikariCP 와 데이터베이스 커넥션 풀(DBCP) 최적화 고민하기 - 이론편 |
Spring, DBCP |
| 57 |
JPA Auditing 으로 엔티티의 생성/수정 시간 자동 추적하기 |
Spring, JPA |
| 56 |
JPA 의 등장배경과 SQL 중심적인 개발의 문제점 |
Spring, JPA |
| 55 |
객체지향 생활 체조 원칙, 견고한 애플리케이션을 만들기 위해 |
Spring, 객체지향 |
| 54 |
하모니 팀의 Jacoco 도입기 (feat. 테스트 커버리지) |
Spring, 테스트 |
| 53 |
코드 커버리지(Code Coverage) 에 대하여 |
Spring, 테스트 |
| 52 |
격리된 테스트(Isolated Test) 구축과 빌드 최적화 여정 - 실전편 |
Spring, 테스트 |
| 51 |
격리된 테스트(Isolated Test) 구축과 빌드 최적화 - 이론편 |
Spring, 테스트 |
| 50 |
하모니 팀의 Rest Docs 와 MockMvc 를 활용한 API 문서 자동화 |
�Spring, 하모니, Rest Docs |
| 49 |
자바의 BigDecimal, BigInteger |
�JAVA, BigDecimal, BigInteger |
| 48 |
트랜잭션의 격리수준과 각 수준의 문제점과 해결방안 |
트랜잭션 |
| 47 |
페이징과 세그먼테이션은 어떻게 가상 메모리를 관리할까? |
OS, 페이징, 세그먼테이션 |
| 46 |
데드락(Deadlock) 의 발생조건과 이를 해결하기 위한 4가지 방안(예방, 회피, 검출, 회복) |
OS, 데드락 |
| 45 |
하모니 팀의 협업 프로세스를 소개합니다. |
Git, Git-Flow, 하온 |
| 44 |
OAuth 2.0 의 등장배경과 동작 메커니즘 |
HTTP, 인증/인가, OAuth |
| 43 |
Slf4j logback 이란 무엇이며, 왜 로깅을 해야할까? 💁♂️ |
스프링, Slf4j, 로깅 |
| 42 |
AWS EC2, Nginx 를 활용하여 스프링 애플리케이션 배포하기 |
배포, Nginx |
| 41 |
Nginx 기반 HTTPS 프로토콜을 적용하여 서비스 배포하기 |
Nginx, HTTPS, Certbot |
| 40 |
RefeshToken 은 AccessToken 의 문제점을 해결하기위해 등장했다 |
HTTP, 인증/인가 |
| 39 |
제 4장. 결과를 전달하는 HTTP 상태 코드 |
HTTP |
| 38 |
TDD(테스트 주도 개발) 와 BDD(행위 주도 개발) |
테스트, BDD, TDD |
| 37 |
Git 브랜치 전략 (Git Flow, Github Flow) |
Git |
| 36 |
제 3장. HTTP 정보는 HTTP 메시지에 있다 |
HTTP |
| 35 |
제 2장. 간단한 프로토콜 HTTP |
HTTP |
| 34 |
제 1장. 웹과 HTTP 는 이렇게 태어났고 성장했다. |
HTTP |
| 33 |
생성자 대신 정적 팩터리 메서드 사용을 고려하라 |
JAVA |
| 32 |
자바와 커맨드 패턴(Command Pattern) |
JAVA, 디자인패턴 |
| 31 |
스프링에서 Argument Resolver 기반 커스텀 어노테이션으로 인증 책임을 분리해보자! (vs Interceptor) |
스프링, ArgumentResolver |
| 30 |
팩토리 메소드 패턴 (Factory Method Pattern) |
JAVA, 디자인패턴 |
| 29 |
자바와 템플릿 메소드 패턴(Template Method Pattern) |
JAVA, 디자인패턴 |
| 28 |
전략 패턴(Strategy Pattern) |
JAVA, 디자인패턴 |
| 27 |
싱글톤(SingleTon) 패턴 구현방법 6가지, Bill Pugh Solution |
JAVA, 디자인패턴 |
| 26 |
DTO(Data Transfer Object) 의 올바른 사용 방식에 대해 |
JAVA, DTO |
| 25 |
REST(Representational State Transfer) API 설계원칙 |
HTTP |
| 24 |
데이터베이스 트랜잭션(Transaction) |
데이터베이스, 트랜잭션 |
| 23 |
대역을 활용한 외부 상황 테스트, Mock 객체의 활용을 어떻게 해야하는데? 🤷 |
TDD, Mockito |
| 22 |
Mocktio 란 무엇이고, 어떻게 사용하는걸까? |
TDD, 테스트, Mockito |
| 21 |
Spring IoC Container 과 스프링 빈(Spring Bean) |
Spring |
| 20 |
POJO (Plain Old Java Object) 를 왜 지향해야 하는가? |
JAVA |
| 19 |
스프링 컨테이너의 제어의 역전(IoC) 과 의존성 주입(DI) |
Spring, 디자인패턴 |
| 18 |
내부(inner) 클래스와 익명 클래스 |
JAVA |
| 17 |
스프링의 독립적인 계층화 아키텍처 (Layered Architecture) |
Spring, 디자인패턴 |
| 16 |
자바의 레퍼 클래스 (Wrapper Class) |
JAVA, equals |
| 15 |
Object.equals의 일반 규약을 지켜서 재정의하라 |
Spring |
| 14 |
DAO 와 Repository 패턴, 차이점은 무엇인가 🤷 |
Spring |
| 13 |
자바의 toString 메소드를 올바르게 활용하는 방법에 대하여 |
JAVA, tostring |
| 12 |
자바의 멤버 클래스는 되도록 static을 붙여서 정적 멤버 클래스로 만들어라 |
JAVA |
| 11 |
테스트 더블 (Test Double) 로 Mocking 하기 |
테스트 |
| 10 |
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (feat. 싱글톤) |
JAVA, 싱글톤 |
| 9 |
혼란스러운 단위, 통합, 인수, 시스템 테스트. 명확한 테스트 격리 수준 정리 😵💫 |
테스트 |
| 8 |
간략히 적어보는 카카오테크 1주차 생활 회고 |
회고 |
| 7 |
자바 String, StringBuilder, StringBuffer 개념 |
JAVA |
| 6 |
자바의 Comparator 과 Comparable 인터페이스 |
JAVA, Comparator, Comparable |
| 5 |
VO(Value Object) 란 무엇이고, 캡슐화를 통해 얻는 이점은 무엇인가? |
JAVA, VO |
| 4 |
자바의 스트림(Stream) 이란 무엇이고, 어떻게 사용하는걸까? |
JAVA, stream |
| 3 |
자바 컬렉션(Collection) 의 개념과 종류 |
JAVA |
| 2 |
프로그래밍을 공부하며 능동적인 성장을 위한 학습방법 |
공부법, 회고, 메타인지 |
| 1 |
2024년 카카오테크 코스 최종 합격까지, 상반기 회고 |
회고, 카카오테크 |