본문 바로가기

백엔드4

인프라 · 데브옵스 Socket이 대체 뭔가 "소켓" Socket 이라는 개념 완벽 파헤치기 소켓(Socket)은 이름이 익숙한 개념이다. 개발을 시작한 지 얼마 안 됐어도 어디선가 한 번은 듣는다. 채팅을 만든다고 하면 소켓 이야기가 나오고, 실시간 알림을 붙인다고 하면 또 나온다.그런데 "소켓이 뭐냐"고 물으면 답이 잘 나오지 않는다. 단어는 익숙한데 정확히 설명하려면 막힌다. 그래서 이 글에서는 소켓이라는 개념을 끝까지 파헤쳐서 완전히 잡아 두려고 한다. 어디까지가 소켓이고 어디부터는 소켓이 아닌지, 그 선을 정확히 긋는 것이 목표다.가장 흔히 도는 설명은 이것이다. HTTP는 요청하고 응답받으면 연결이 끊기는데, 소켓은 연결을 계속 유지해 준다. 그러니까 소켓은 실시간 통신을 위한 것이다.이 설명은 틀렸다. 소켓이 하는 일과 그 위에 얹힌 프로토콜이 하는 일을 한 덩어리로 뭉쳐 놓은 문장.. 2026. 8. 5.
개발 일지 · 팁 JPA 연관관계를 안 쓰면 조회는 어떻게 하나 — FK 참조, QueryDSL on 조인, 애플리케이션 조립 지난 글(JPA 연관관계, 쓸까 말까 — @ManyToMany도 써도 될까?)에서 우리 팀이 객체 매핑을 거의 쓰지 않는 쪽으로 흘러왔다는 이야기를 했다. 그 글을 쓰고 나서 스스로 찜찜했던 부분이 하나 있었다. "안 쓴다"까지는 말했는데, "그럼 조회는 어떻게 하느냐"에 대한 답을 안 했다는 것이다.연관관계를 걷어내면 문제가 하나 생긴다. order.getCustomer().getName() 한 줄이면 끝나던 게 안 된다. 주문에서 고객 이름을 가져오려면 고객을 따로 조회해서 붙여야 한다. 이게 매번 불편하다면 그 컨벤션은 오래 못 간다. 실제로는 안 불편했으니 몇 년째 유지되고 있는 건데, 그 "안 불편한 방법"이 뭔지를 정리해 두려고 한다.이번에는 감이 아니라 코드를 직접 세어 봤다. 우리 팀이 운.. 2026. 8. 2.
인증 · 보안 Keycloak SPI 정석 가이드 - 빌드·배포까지 앞의 두 글(소셜 로그인 원리, Keycloak SSO 구축기)에서 예고한 SPI 이야기다.Keycloak SPI는 한마디로, Keycloak이 제공하는 인터페이스를 오버라이드(override)해서 나만의 커스텀 기능을 만들거나 기존 기능을 확장하는 것이다. 로그인 검증, 토큰에 담기는 정보, 사용자 조회 방식 같은 걸 Keycloak 기본 동작 대신 내가 만든 코드로 바꾸는 방식이라고 보면 된다.이 글은 설명을 길게 늘어놓기보다, 개념 → 구조 → SPI별 코드와 콘솔 설정 → 빌드·배포 → 주의사항 순서로 실제 만들 때 필요한 것만 정리한다. 공식 문서는 Keycloak Server Development를 같이 보면 좋다.코드·경로·이름은 모두 예시(com.example, custom-*)로 바꿔 뒀.. 2026. 7. 19.
인증 · 보안 Keycloak으로 SSO 구축한 이야기 회사에는 서비스가 여러 개 있었고, 각 서비스마다 회원 정보와 로그인이 따로 놀고 있었다. 같은 사람이 서비스마다 다른 계정을 만들고, 서비스를 옮길 때마다 다시 로그인하는 상황이었다. 이걸 하나의 통합 인증 체계로 묶는 일을 맡게 되면서, 어떤 기술을 골랐고 왜 그렇게 정했는지를 정리해 두려고 한다.이 글은 앞 글(구글·카카오 로그인은 실제로 어떻게 동작할까)에서 다룬 OIDC와 OAuth 2.0 원리를 이미 안다는 전제로 쓴다. 로그인 흐름이 아직 낯설다면 그 글을 먼저 읽고 오길 권한다. 핵심만 다시 말하면, 소셜 로그인은 인증 전담 서버(IdP)가 세션을 들고 있고, 표준 프로토콜로 신원을 주고받는 구조였다. 이번 글의 주인공인 Keycloak은 그 "인증 전담 서버"를 우리가 직접 운영하는 버전.. 2026. 7. 18.