2025
- 02 Nov INSERT...SELECT 구문에서 테이블 락 발생 여부
- 10 Oct ElasticSearch와 Opensearch의 차이점
- 07 Oct ElasticSearch의 내부 구조와 동작 원리
- 17 Aug ISO Week Numbering: ISO 주와 일반 주의 차이점
- 17 Aug LOAD DATA의 중복 데이터 삽입 방지
- 14 Aug ISOLATION LEVEL의 관습적 사용
- 07 Aug 외부 API 문서화
- 26 Jul 올바른 장애 대응 문화에 대한 생각 정리
- 20 Jul 대량 쓰기 작업에서의 멱등성은 어떻게 보장할까?
- 19 Jul 감사 이력 관리 방법 비교
- 19 Jul MySQL 벌크 UPDATE에 대한 오해: Row-by-Row
- 18 Jul 대량 배치 작업 전, 백업의 중요성과 적절한 방법
- 15 Jul 복합키 업데이와 중복 키 오류
- 06 Jul 글로벌 락이 없는 레디스의 노드 재분배: REBALANCING
- 03 Jul 의존성을 가급적 단 방향으로
- 02 Jul 인덱스에도 길이 제한이 있다?
- 01 Jul 레디스의 키 분배 전략:CRC16
- 24 Jun 유연한 설계는 항상 필요한가?
- 24 Jun 컴퓨터의 수 표현 방식과 Decimal을 사용하는 이유
- 23 Jun 잘못 이해하고 있었던 단일 책임의 원칙
- 22 Jun 레디스 복제 동기화: PSYNC
- 22 Jun PSYNC가 실패하면 정말 SYNC로 동기화를 할까?
- 21 Jun Git에도 Lock이 있다?
- 10 Jun Gradle의 Incubating?
- 08 Jun CBC 모드에서도 IV 값이 고정되면 동일한 암호문이 생성될 수 있다
- 03 Jun 운영 환경에서 수동 실행이 주는 유연함
- 03 Jun 기술도 중요하지만 비즈니스는 더 중요하다
- 01 Jun serialVersionUID의 변경 조건은 어떻게 될까?
- 30 May 쿼츠를 사용해야 하는 이유, 다른 스케줄링 시스템과의 비교
- 30 May Kotest 테스트 케이스 개별 실행 팁
- 30 May IDE에서 문자열 코드를 인식시키는 방법
- 28 May 스케줄링 시스템의 분류와 설계 관점 살펴보기
- 28 May 가맹점마다 정산 모델이 다를 때 어떻게 처리해야 할까?
- 25 May 로컬에서 Github Action 실행하기
- 17 May MySQL의 NULL 비교
- 08 May final 키워드를 default로 사용하는 것은 좋은 방법일까?
- 08 May MySQL에서 특정 칼럼이 어느 테이블에 있는지 어떻게 찾을 수 있을까?
- 04 May Statement와 Expression
- 30 Apr 3개월 간의 수습기간을 돌아보며
- 25 Apr 일급 컬렉션은 도메인적으로 어떤 의미를 가질까?
- 24 Apr 직렬화/역직렬화 과정에서 주의할 점
- 22 Apr 협력과 책임, 역할, 그리고 묻지 말고 시켜라
- 22 Apr Flink의 장애 대응 및 외부 시스템과 연동 시 고려할 점
- 18 Apr Compressed Oops와 32bit 참조 최적화
- 17 Apr I/O 성능 개선을 위한 DirectBuffer
- 16 Apr 1분 30초 내에 수천만 건의 여신협회 데이터 저장하기
- 11 Apr 비동기 환경에서 MultipartFile이 사라진다.
- 08 Apr pt-online-schema-change를 사용하다 결제 시스템이 마비 됐다?
- 02 Apr 선분 이력 관리
- 24 Mar 테이블에 주석을 추가하는데, 결제 사고가 발생했다고?
- 23 Mar TRUNCATE 쿼리는 비동기 환경에서 의도대로 동작하지 않는다.
- 23 Mar TRUNCATE 쿼리는 트랜잭션의 영향을 받을까?
- 21 Mar GROUP BY에도 종류가 있다고?
- 17 Mar FTP와 SFTP란 무엇일까?
- 17 Mar JPA를 사용할 때, 하나의 서버, 여러대의 데이터베이스는 어떻게 처리할까?
- 16 Mar ElasticSearch JVM Options 설정과 살펴볼 점
- 16 Mar 역색인은 무엇이고 왜 빠를까?
- 06 Mar Window Operations를 살펴보자
- 01 Mar 운영체제의 스케줄링 코드 살펴보기
- 01 Mar 이벤트루프의 동작원리는 무엇일까?
- 25 Feb 단조 시계와 실제 시계는 무엇일까?
- 24 Feb 11번 포트를 노출하면 왜 위험할 수 있을까?
- 22 Feb File Descriptor란 무엇일까?
- 19 Feb DNS Spoofing 실습 정리
- 18 Feb Host Key Warning은 왜 발생할까?
- 11 Feb 해시충돌이 발생했을 때 최악의 시간 복잡도는 어떻게 될까?
- 20 Jan WHERE 절에 1=1은 왜 사용할까? 이 방법은 괜찮을까?
- 10 Jan rebase 중, remote 파일과 로컬 untracked 파일이 충돌할 때, 어떻게 해야 할까?
- 04 Jan 개발을 시작하게 된 계기와 개발을 하는 이유
2024
- 12 Nov 로컬 캐시를 글로벌 캐시와 동기화할 수 있을까?
- 08 Nov 서비스 장애 대응과 롤백, 그 과정에서 배운점
- 01 Nov EVAL, EVALSHA 명령어의 차이점과 레디스 내부 코드 살펴보기
- 30 Oct Retry 패턴을 적용할 때, 어떤 점을 고려해야 할까?
- 22 Oct ChainedTransactionManager는 왜 Deprecated 됐을까?
- 20 Oct 메시지 유실은 언제 발생할 수 있을까?
- 20 Oct 왜 MySQL에는 팬텀 리드가 발생하지 않을까?
- 15 Oct Semantic Versioning이란?
- 15 Oct Github Action Workflow 삭제 자동화
- 11 Oct Google File System은 어떻게 구성 돼 있을까?
- 10 Oct dependsOn과 mustRunAfter는 무슨 차이가 있을까?
- 03 Oct Git History 관리 중 발생한 충돌 해결기
- 20 Sep 비동기 환경에서 MDC의 문맥 복사 어떤 원리로 동작할까?
- 16 Sep 애플리케이션의 타임존은 어떻게 관리하는 것이 좋을까?
- 08 Sep 서버 리소스 변경으로 인한 롤링 배포 실패 해결기
- 17 Aug 분기문으로 개발 환경을 구분하는 것은 좋은 방법일까?
- 06 Aug 톰캣 설정과 TPS 처리량이 관계가 있을까?
- 25 Jul 인프라를 사용할 때, 민감정보를 어떻게 관리해야 할까?
- 25 Jul 서버의 포트 범위를 증가시키면 어떤 이점이 있을까?
- 14 Jul 엔디언(Endian)은 무엇일까?
- 08 Jul SonarCloud 지표를 커스텀 해보자
- 08 Jul Bastion 으로 private 인스턴스에 접속하기
- 08 Jul AWS 배포 과정에서 Region을 지정하지 않아 발생한 이슈
- 06 Jul 자바 쓰레드 복습 내용 정리
- 05 Jul ECS 롤링 배포 과정 중 겪은 이슈
- 02 Jul 프로젝트를 잘 관리하려면 어떻게 해야할까?
- 29 Jun 헬스체크 유예 기간으로 겪은 배포 이슈
- 20 Jun IAC 도입과 사용하며 느낀점
- 10 Jun 빌더 패턴의 불완전성 없애기
- 25 May 서킷브레이커, 재시도 동작순서 삽질기
- 17 May 시간
- 13 Apr 배포 버전을 어떻게 명시할까?
- 24 Mar 스프링에서 잘못된 URL로 요청이 오면 어떻게 커스텀한 응답을 내려줄까?
- 23 Mar 빌드와 컴파일의 차이는 무엇일까?
- 16 Mar 스프링 mvc는 왜 멀티 쓰레드 모델을 택했을까?
- 13 Mar SpringBoot Docker-Compose 지원
- 05 Mar 도메인 이벤트와 사용시 고려할 점은 무엇이 있을까?
- 05 Mar Liquibase와 사용하며 느낀 점
- 02 Mar 새로 배운 Git 브랜치 관리 전략
- 01 Mar LocalStack을 활용한 AWS SNS/SQS 테스트
- 29 Feb 부하 조절-Polling
- 11 Feb Proxy패턴과 Decorator패턴의 차이는 무엇일까?
- 10 Feb Transaction의 동작 과정은 어떻게 될까?
- 09 Feb TransactionManager의 종류는 어떤 것들이 있을까?
- 06 Feb Config 서버
- 06 Feb Docker Internal
- 27 Jan @SneakyThrows
- 25 Jan URI, URL
- 25 Jan Binary 데이터 변환과 데이터 유실
- 24 Jan Nginx DNS 캐싱 이슈 해결
- 24 Jan ALB에는 왜 정적 IP 주소가 할당되지 않을까?
- 10 Jan 페이징 성능 개선하기
2023
- 25 Dec 파일 복사
- 15 Dec S3 파일 검색/동기화
- 22 Nov 리버스 프록시를 세팅하며 고려한 점
- 18 Nov 인프라 아키텍처 개선 후기
- 07 Nov JPA에서 insertable=false, updatable=false를 하면 반드시 값이 저장되지 않을까?
- 07 Nov JPA 프록시 컬렉션
- 01 Nov Rest-Assured ObjectMapper
- 01 Nov IntelliJ Connection Read-Only 설정하기
- 07 Oct Spring ThreadPool
- 30 Sep NIO(2)
- 30 Sep NIO(1)
- 14 Sep Virtual threads
- 13 Sep ArrayList와 LinkedList의 성능 비교
- 13 Sep System Structure
- 11 Sep Operating System
- 08 Sep CPU Cache
- 07 Sep 테스트 병렬 실행
- 07 Sep 멀티 모듈에서 RestDocs 문서가 흩어질 때, 어떻게 해결할까?
- 20 Aug 좋은 코드 리뷰를 위한 규칙
- 20 Aug Singleton Pattern
- 08 Aug Observer Pattern
- 06 Aug @SpringBootConfiguration
- 03 Aug Dao와 Repository의 차이점은 무엇일까?
- 03 Aug Duck Typing
- 01 Aug Statement와 PreparedStatement
- 26 Jul CasCade
- 24 Jul Lombok의 동작 원리
- 07 Jul JPA Envers의 사용법과 주의할 점
- 13 Jun Multi-Module 변수 관리
- 08 Jun Exception
- 22 Mar 스프링 빈 생명주기 관리
- 28 Feb Controller가 호출되기 까지 어떤 과정을 거칠까?
- 28 Feb Timeout 테스트
- 09 Feb doReturn과 thenReturn
- 05 Feb Blocking/Non-Blocking, Sync/Async의 특징과 차이점은 무엇일까?
- 03 Feb [Unit Testing] Unit Test Principles
- 01 Feb [Unit Testing] Unit Test Anti Pattern
- 01 Feb Custom Response
- 30 Jan 왜 Wrapper Class를 왜 사용할까?
- 30 Jan 디미터의 법칙에 대한 오해
- 27 Jan MySQL 인덱스 컨벤션은 어떻게 정할까?
- 27 Jan MySQL FK 컨벤션
- 22 Jan 외부 API 목으로 대체하기
- 12 Jan [Unit Testing] Integration Test
- 02 Jan Named Lock은 무엇이고, 어떻게 사용할까?
2022
- 31 Dec SCAN
- 08 Nov ETag 적용기 및 발생했던 이슈
- 27 Oct Replication 데이터베이스 구성 시 주의점
- 23 Sep Replication의 연동 원리
- 19 Sep 팔로잉/팔로워를 구현하며 마주친 동시성 이슈
- 11 Aug JPA를 사용하며 느낀 장점
- 11 Aug JPA를 사용하며 느낀 단점
- 11 Aug Call By Value
- 10 Mar Slack, Gmail 연동