새로운 포스트
-
EDA
[EDA] 3편: CQRS - 읽기와 쓰기를 분리하는 이유
-
Hexagonal
[Hexagonal] 헥사고날 아키텍처 - 왜 쓰는지부터 제대로 이해하기
-
DDD
[DDD] 외부 Context 통합의 비가용성, DDD와 헥사고날 아키텍처로 다루기
-
Java
[Java] Java 모듈화, 무엇으로 해야 할까? - JPMS vs Gradle 멀티 프로젝트 vs Spring Modulith
-
DDD
[DDD] 바운디드 컨텍스트 매핑 패턴 - OHS/PL과 ACL 중심으로
-
JVM
[JVM] CRaC 완전 정복 (3편) - JDK 배포판 비교와 실무 선택 가이드
-
JVM
[JVM] CRaC 완전 정복 (2편) - Spring Boot 실전 적용
-
JVM
[JVM] CRaC 완전 정복 (1편) - 개념과 동작 원리
다른 사람들이 관심있어한 포스트
-
Techfork 하이브리드 검색 구현 구조 정리 — BM25 + kNN + RRF + 개인화 리랭킹 들어가며TechFork의 검색은 단순한 키워드 매칭이 아니라, BM25 기반 lexical search와 embedding 기반 semantic search를 결합한 하이브리드 구조로 동작합니다. 두 검색 결과를 RRF(Reciprocal Rank Fusion)로 결합하고, 로그인 사용자에게는 프로필 기반 개인화 리랭킹까지 적용합니다. 이 글에서는 검색 파이프라인의 각 단계와 후처리까지의 전체 흐름을 정리합니다.현재 검색 설정이 어떤 실험 과정을 거쳐 결정되었는지는 검색 품질을 5단계 실험으로 개선한 과정 글을 참고해주세요. 검색 품질을 5단계 실험으로 개선한 과정 — 필드 가중치부터 쿼리 구조까지들어가며TechFork는 기술 블로그 글을 수집해서 검색과 추천을 제공하는 서비스입니다. 검색은 BM25 ..
-
Spring Security [Spring Security] Spring Security 환경에서 CORS 제대로 이해하고 설정하기 CORS란?CORS(Cross-Origin Resource Sharing)는 브라우저가 현재 페이지의 출처(Origin)와 다른 출처로 HTTP 요청을 보낼 때 적용되는 보안 정책이다. 여기서 Origin이란 프로토콜 + 호스트 + 포트의 조합을 말하며, 이 중 하나라도 다르면 Cross-Origin으로 간주된다. 예를 들어 프론트엔드가 http://localhost:3000, 백엔드가 http://localhost:8080이면 포트가 다르므로 Cross-Origin이다. 중요한 점은 CORS는 서버가 아닌 브라우저가 적용하는 정책이라는 것이다. 서버 간 통신이나 Postman 같은 도구에서는 CORS가 적용되지 않는다. 브라우저가 서버의 응답 헤더를 확인해서 "이 Origin에서의 요청이 허용됐는가?".. -
Techfork [26/01/28] 오늘의 개발 일지 - 웹 Apple 소셜 로그인 구현 오늘은 웹에서 Apple 소셜 로그인을 할 수 있도록 REST API 문서를 보고 구현했습니다. 애플 로그인은 카카오 로그인보다 훨씬 까다롭더군요...https://developer.apple.com/documentation/signinwithapplerestapi Sign in with Apple REST API | Apple Developer DocumentationCommunicate between your app servers and Apple’s authentication servers.developer.apple.com 웹 Apple 로그인 구현 가이드TechFork 프로젝트의 Spring Security OAuth2 기반 Apple 소셜 로그인 구현⚠️ Apple vs Kakao 핵심 차이.. -
Data [Data] B-Tree vs LSM-Tree — RDB와 NoSQL은 왜 다른 스토리지 엔진을 선택했을까 📌 데이터베이스 깊이 파기 시리즈 — 3편 들어가며들어가며이전 편들에서는 RDB, 문서 DB, 그래프 DB의 데이터 모델을 비교하고, SQL·MapReduce·그래프 질의 언어의 철학적 차이를 살펴봤습니다. 이번에는 한 단계 더 아래로 내려가서, 스토리지 엔진의 내부 구조를 살펴보겠습니다. 핵심 질문은 이것입니다.같은 데이터를 저장하는데, 왜 RDB는 B-Tree를 쓰고 NoSQL 계열은 LSM-Tree를 많이 쓸까?이 질문에 답하려면 먼저 각 자료구조가 디스크에 데이터를 어떻게 쓰고 읽는지를 이해해야 합니다. 1. B-Tree — 읽기에 최적화된 구조기본 원리B-Tree는 데이터를 고정 크기의 페이지(보통 4KB~16KB) 단위로 나눠서 디스크에 저장합니다. 각 페이지는 정렬된 키와 자식 페이지에 대..
-
JVM [JVM] CDS와 AppCDS - JVM이 클래스 로딩을 캐싱하는 방법 JVM 인터널 시리즈이전 글에서 ClassLoader가 .class 파일을 찾아 InstanceKlass로 변환하는 과정을 살펴봤습니다.이번 글은 그 연장선입니다. JVM이 매번 같은 작업을 반복하지 않도록 결과를 캐싱하는 방법, Class Data Sharing(CDS) 을 다룹니다. 1. 왜 JVM 시작이 느린가?java -jar app.jar를 실행하는 순간, JVM은 애플리케이션이 첫 번째 요청을 처리하기 전까지 상당한 양의 작업을 수행합니다. 전형적인 Spring Boot 애플리케이션은 완전히 초기화되기까지 15,000~25,000개의 클래스를 로드합니다. 각 클래스는 아래의 단계를 거칩니다.Loading : .class 파일 탐색 → 바이트코드 읽기/파싱 → InstanceKlass 생성 ..