backend

이 글은 인프런 OAuth2 강의를 수강하면서 실습한 내용을 바탕으로 작성되었습니다. 실제 구현 과정에서 느꼈던 궁금증과 개선 과정을 정리해보았어요! [본 게시물은 파트너스 활동의 일환으로 소정의 수수료를 받을 수 있습니다.] 🤔 문제의 시작 Spring Security, OAuth2Client 를 활용해서 카카오 소셜 로그인을 구현하던 중,각 OAuth2 제공자마다 별도의 Response 클래스를 만들고 있었다. // 기존 방식public class NaverResponse implements OAuth2Response { private final Map attribute; // ... 구현}public class GoogleResponse implements OAuth2Response ..
· Spring
이 글은 인프런 OAuth2 강의를 수강하면서 실습한 내용을 바탕으로 작성되었습니다. 실제 구현 과정에서 느꼈던 궁금증을 정리해보았어요! [본 게시물은 파트너스 활동의 일환으로 소정의 수수료를 받을 수 있습니다.] Spring Boot에서 카카오 소셜 로그인을 구현하면서 정말 신기한 경험을 했다.단순히 http://localhost:8080/oauth2/authorization/kakao라는 URL에 접속했을 뿐인데,마법처럼 카카오 로그인 페이지로 리다이렉트되었다.도대체 Spring Security OAuth2 내부에서는 무슨 일이 일어나고 있는 걸까? 🤔 의문의 시작 처음에는 이해가 안 됐다.나는 /oauth2/authorization/kakao라는 컨트롤러를 만든 적도 없고,카카오 API를 직접 호..
· Spring
안녕하세요, 오늘은 토비의 클린 스프링 강의를 들으면서 알게 된 정말 유용한 내용을 공유하려고 해요.https://inf.run/3TCuG 토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1 강의 | 토비 - 인프런토비 | 가상의 스타트업 개발팀이 단계적으로 클린 코드와 스프링 개발 원칙을 따라서 빠르고, 안정적이면서 유연하고, 유지보수하기 좋게 개발하는 과정을 실제 업무 진행과 유사한 방식으로www.inflearn.com[본 게시물은 파트너스 활동의 일환으로 소정의 수수료를 받을 수 있습니다.] 혹시 프로덕션에서 NullPointerException 때문에 밤새 디버깅해본 경험 있으신가요?저는 정말 많았는데,이제는 JSR-305와 Spring의 Null Safety 기능으로 이런 ..
1. Record란? Java 16에서 정식으로 도입된 Record는 불변(immutable) 데이터 객체를 생성하기 위한 특별한 형태의 클래스다.주요 특징은 아래와 같은데, 모든 필드가 private final로 선언된다.생성자, getter, equals(), hashCode(), toString()메서드가 자동 생성된다.불변성(immutability)이 보장된다.java.lang.Record를 자동으로 상속한다.final 클래스라 상속이 불가능하다. 2. 기존 DTO vs Record 비교 동일한 데이터 객체를 일반 클래스로 작성했을 때, Record로 작성했을 때를 비교해보자 일반 DTO 클래스public class UserDTO { private final String name; pr..
· Spring
1. Snake Case Snake Case는 프로그래밍에서 변수, 함수, 파일명 등 이름을 작성할 때단어 사이를 밑줄('_')로 구분하는 네이밍 규칙이다.모든 문자를 소문자로 작성하며, 공백 대신 밑줄을 사용하는 것이 특징인데,  예를 들어, user_namephone_number위와 같이 작성하면 Snake Case 를 따른 것이다. 일반적으로 JSON 데이터 포맷, 데이터베이스에서 주로 사용되는데, Java를 주로 쓰는 나로서는 Java의 기본 규칙인 Came Case와 충돌(?)하게 되어 문제가 될 때가 있다.물론, 문제라고 할 것 까지는 없는데,팀 프로젝트를 진행할 때는 코드 스타일을 정확하게 짚고 넘어가는 것이 협업하는 데 좋긴 할 것이다. 2. 팀 프로젝트 식당 예약, 줄서기 프로그램을 개발..
1. TCP 3-way handshake TCP의 3-way handshake는 신뢰할 수 있는 연결을 설정하기 위한 3단계 과정이다.먼저 클라이언트가 서버에 SYN 패킷으로 연결 요청을 보낸다.서버는 이를 수락하며 SYN-ACK 패킷으로 응답한다.클라이언트가 ACK 패킷으로 응답하여 연결이 성립된다. 이 과정은 데이터 전송 전에 양측의 통신 준비 상태를 확인하고 초기 순서 번호를 동기화하여TCP의 신뢰성과 안정성을 보장한다. 2. SYN 패킷 첫 번째 단계에서 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트(메시지, 또는 패킷)을 보낸다.이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있다.이 때, 클라이언트는 SYN을 보내고 SY..
1. 멱등성(Idempotent)이란 HTTP 메서드의 멱등성이란 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고,서버의 상태도 동일하게 남는 특성을 말한다.즉, 요청을 여러 번 실행해도 결과가 같아 안전하게 사용할 수 있는 성질이다.  2. 멱등성을 가진 HTTP 메서드 GET: 리소스를 조회하는 메서드로, 여러 번 요청해도 동일한 결과를 반환한다.HEAD: GET과 유사하지만 응답 본문을 제외한 헤더만 반환한다.PUT: 리소스를 수정하는 메서드로, 같은 데이터로 여러 번 요청해도 결과는 동일하다DELETE: 리소스를 삭제하는 메서드로, 여러 번 요청해도 서버의 상태는 동일하다.OPTIONS: 서버가 지원하는 메서드 정보를 반환한다. 3. 멱등성을 가지지 않는 HTT..
1. LokiLoki 는 Grafana Labs 에서 개발한 수평 확장 가능한 로그 집계 시스템이다. Grafana와 쉽게 연동 되고, Prometheus, K8s와 궁합이 잘 맞는다.Elasticsearch과 비교하면, 성능과 제공하는 기능 측면에서 부족하긴 하지만, 시스템 상황을 확인하는 데는 가성비 있는 도구이다. 2. Spring 프로젝트 설정 build.gradledependencies { implementation 'com.github.loki4j:loki-logback-appender:1.5.1' //추가 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' im..
Griotold
'backend' 태그의 글 목록