웹서비스를 하나 만들고 나면, 묘하게 두 가지 감정이 동시에 온다.“일단 돌아간다”는 안도감이랑, “이게 끝은 아니지”라는 조급함.내가 만든 별헤는밤도 그랬다. 웹으로 커뮤니티를 만들고, 채팅을 붙이고, 쪽지를 만들고, 로그인과 보안을 다지고, 뉴스와 영상, 날씨, I
사이드 프로젝트로 별 헤는 밤이라는 커뮤니티 사이트를 배포하고 운영하면서, 기능을 만들고 고치고 다시 걷어내는 과정을 꽤 오래 겪었다.그중에서도 가장 기억에 남는 건 날씨 캐싱 설계와 회원 탈퇴 처리였다.지금 돌아보면, 정말 많은 시간을 쏟았는데 결과적으로는“굳이 이렇
'별 헤는 밤'이라는 웹 서비스를 만들기로 결심한 이유는 세 가지였다.완성의 경험이 필요했다정규 학습 외에 내가 혼자 처음부터 끝까지 완성한 프로젝트가 없었다. 실전 경험의 부재자바와 스프링을 공부만 하고 직접 개발하며 상황을 겪어보지 않으니 모든 것이 막연하게만 느껴
JPA에서 연관 관계가 LAZY 로딩일 때,1번의 메인 쿼리 실행 후, 연관된 엔티티를 N번 추가 조회하는 현상Post와 User는 @ManyToOne(fetch = LAZY) 관계게시글이 10개라면:Post 조회 쿼리: 1번각 User 조회 쿼리: 10번 → 총 1
Oracle 12c부터 DB를 CDB(큰 집)과 PDB(방)으로 나누어 관리해요.여러 개의 데이터베이스를 하나의 DB 시스템 안에서 동임적으로 사용하고 싶을 때 필요해요.CDB = 오라클 전체 시스템 (건물)PDB = 서비스에 쓰이는 DB 하나하나 (방)\`C개발자는
별 헤는 밤 프로젝트에서 S3 직접 접근 방식에서 CloudFront CDN 기반 아키텍처로 전환하고, Presigned URL 수명을 5분으로 최적화한 과정을 기록합니다.직접 S3 접근: CDN 없이 전 세계 사용자가 미국 동부 리전에 직접 접근캐싱 부재
평소와 같이 커피 한 잔과 함께 모니터링 대시보드를 확인하던 중, 별 헤는 밤 서비스에 접속이 안 되는 것을 발견했다. 브라우저에는 무정하게도 ERR_TOO_MANY_REDIRECTS 오류만 반복되고 있었다."어제까지 잘 되던 사이트가 갑자기 왜...?
운영체제 개념이 어렵게 느껴지는 분들을 위해, 복잡한 이론 대신 우리에게 익숙한 '화장실'을 비유로 들어 쉽게 이해해보자프로세스 (Process): 화장실을 이용하려는 사람임계영역 (Critical Section): 한 번에 한 사람만 들어갈 수 있는 변기칸자원 (Re
"분산락이 필요한 이유가 뭔가요? Redis와 Redisson의 차이점은?" Redis Template: 단순한 캐싱과 세션 관리에 사용동시성 문제: 포인트 지급, 출석체크 등에서 Race Condition 발생 가능기술면접 대비: 분산 시스템에서의 동시성 제어에 대
내가 직접 객체를 생성하지 않고, Spring이 필요한 객체를 대신 주입해주는 개념→ 객체 간 결합도를 낮추고 테스트 가능성을 높임@Autowired = 쟁반: 먼저 쟁반 놓고 나중에 이것저것 올림 (중간에 이상한 거 섞일 수 있음)생성자 주입 = 쿠키틀: 처음부터 필

Partitioning은 하나의 데이터베이스 내에서 테이블 데이터를 여러 파티션(partition)으로 분할하는 기법입니다.수평 파티셔닝 (Horizontal Partitioning) 행(Row) 기준으로 데이터 분할 → 예: 사용자 ID 1~10000 / 1000
웹 개발하다 보면 누구나 한 번쯤은 마주치는 CORS 에러.처음 보면 굉장히 당황스럽고, “왜 요청은 성공했는데 브라우저는 응답을 못 받지?”라는 혼란이 생기죠.오늘은 이 CORS(Cross-Origin Resource Sharing) 개념을스타벅스 비유로 쉽고 재밌

지난주 토요일, 강남 삼성역 인근에서 열린 SpringCamp 2025에 다녀왔습니다.사실 처음엔 “개발자 행사야 다 거기서 거기지”라는 마음도 조금 있었는데, 결론부터 말하자면 기술, 조직, 사고방식까지 통으로 자극받고 돌아온 값진 경험이었습니다.이번 후기에선 단순한
Spring Security에서 실제 인증 로직을 담당하는 핵심 컴포넌트사용자의 ID/PW 또는 JWT 토큰 등으로부터 인증을 수행하고인증된 사용자 정보(Authentication)를 반환함다양한 인증 방식을 Provider로 분리할 수 있음 (예: Form Login
스프링 시큐리티는 필터 기반으로 작동하며, 인증/인가 과정을 체계적으로 분리하여 처리함.FilterChain → AuthenticationFilter → AuthenticationManager → Provider 흐름으로 구성됨.로그인 시: /login, 또는 사용자
자바에서 다수의 요청을 처리하기 위해 미리 생성된 쓰레드 집합(Pool)을 재사용하는 구조매번 새 쓰레드를 만들지 않고, 일정 개수의 쓰레드를 반복 사용하여 성능을 최적화주로 비동기 작업, 백그라운드 작업, 대규모 요청 처리 등에 사용됨Executors는 내부적으로 T
JWT는 무상태 인증 방식이기 때문에, 토큰을 클라이언트에만 저장하면 서버는 상태를 기억하지 못함.이를 보완하기 위해 Redis를 사용해 로그아웃된 토큰이나 강제로 만료시킬 토큰을 관리하는 구조를 설계함.클라이언트가 로그인 요청 → 서버가 JWT 발급 (access +
JVM은 실행 중인 Java 애플리케이션의 메모리를 아래와 같이 구분해 관리함:Heap 영역: 객체가 저장되는 공간 (GC의 주요 대상)Young Generation (Eden, Survivor)Old Generation (Tenured)Method Area (Perm