백엔드 개발하며 작성한

    Cookie  (feat. JWT Token, SSO)

    Cookie (feat. JWT Token, SSO)

    단일 서비스의 사용자 인증 기능을 위해 동작하던 "사용자 인증 애플리케이션"에서다수 서비스의 사용자 인증 기능을 제공하는 서버로 동작해야함과 동시에해당 서버를 통해 인증된 사용자는 사내 다른 서비스에 접속시에도 로그인 상태를 공유해야했기 때문에 SSO 기능까지 가능하도록 구현해야했습니다. 어떤 방식으로 구현할 지 고민한 내용 중 JWT 토큰을 저장할 위치와 관련하여 "쿠키" 에 대해 알아본 내용들을 정리합니다. SSO 기능을 제공하려면 크게 두가지 요구사항이 있었습니다.1) 로그인 후, 새 탭에서 접속했을 때에도 로그인이 되어야 한다.2) 서브 도메인이 같으면 인증 토큰이 공유되어야 한다. (단, 다른 서브 도메인에 접속 시에는 쿠키가 전달되지 않는다.) 기존 "사용자 인증 애플리케이션"은 사용자 인증 ..

    예외(Exception) 처리

    적절한 예외 핸들링은 애플리케이션에 필수적이지만 생각보다 중요성을 간과할 수 있는 부분이라 생각합니다.이 글에서는 예외를 다룰 때마다 고민했던 포인트들과 예외를 처리하고 생성하는 Best Practice에 대해 정리합니다.1) 예외 처리 (Handling Exceptions) 할 때메서드가 에러로 인해 완료되지 않았을 때 상태를 복구한다.메서드에서 예외가 발생했을 때, 호출자는 부작용이 없다고 가정할 수 있어야 합니다. 계좌 이체 코드 (한 계좌에서 출금하고 다른 계좌에 입금하는 코드)를 예로 들면,출금 로직은 정상적으로 성공했는데 입금 로직에서 예외가 발생하면, 출금이 그대로 완료되지 않도록 해야 합니다. 이를 위해 처리할 수 있는 방안은, 입금 거래 과정 중 한 곳이라도 예외가 발생하면 그전에 정상적..

    [Spring Batch] 1. 스프링 배치 공부 순서와 간단 소개

    [Spring Batch] 1. 스프링 배치 공부 순서와 간단 소개

    기록 순서 1. 스프링 배치 소개 (탄생 배경, 적용 가능한 task, 아키텍처) 현재 글 2. 스프링 배치 시작 (스프링 배치 플젝 + 의존성 구성, 간단한 실습_job 구성+실행) 3. 스프링 배치 도메인 이해 (job, step, 등 각 도메인에 대한 이해_특징,기능,정의) 🌟🌟🌟 4. 스프링 배치 실행 (완성된 job 실행, 도메인 간 상호관계 및 흐름 파악) 체계적&유연한 배치 모델 구성 4. 아키텍처 Application 스프링 배치 프레임웍을 통해 개발자가 만든 배치 Job과 커스텀 코드 포함되어 있다. Batch Core Job을 실행, 모니터링, 관리하는 API로 구성 JobLauncher, Job, Step, Flow 등 Batch Infrastructure Application, Ba..

    Spring Framework와 Spring Boot

    이번 포스팅에서는 Spring Framework와 Spring Boot 에 대해 알아보겠습니다.💡 Spring Framework가 뭐야?Spring Framework는 자바 애플리케이션 개발을 위한 오픈소스로 공개된 애플리케이션 프레임워크입니다.Spring 이 등장함으로 인해 개발자들이 기술을 사용하기 위해 불가피하게 작성해야했던 복잡한 코드들을 걷어내주었고, 이로 인해 코드의 복잡성을 낮춰주었다고 합니다. 더보기Framework ?프레임워크란, 어떠한 목적을 쉽게 달성할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어둔 것을 의미한다.애플리케이션 프레임워크는 애플리케이션을 개발하는데에 있어 필요한 모든 업무 분야 및 기술과 관련된 코드들의 뼈대를 제공합니다. Spring Framework의 ..

    @Component에 대해 (@Bean)

    @Component에 대해 (@Bean)

    Spring 으로 개발을 할 때 @Bean과 @Component의 차이를 명확하게 알고 사용한 게 아니었다는 걸 알고정리를 하고자 오랜만에 글을 작성합니다.먼저 @Bean과 @Component의 차이를 다루고,@Component에 대한 Spring 공식문서를 읽으며 정리하고 마무리하겠습니다.두 애노테이션 모두 Spring Context에 해당 객체를 빈(Bean)으로 등록하기 위해 사용한다는 점은 공통점입니다.차이점은 1. 용도와 2. 제한이 있습니다.1. 용도개발자가 통제하지 못하는 외부 라이브러리를 가지고 와서 빈으로 등록하려고 할 때, @Bean을 사용할 수 있습니다.반면, 개발자가 직접 구현한 클래스를 빈으로 등록하려 할 때, @Component를 사용할 수 있습니다.결국,둘다 스프링의 의존성 주..

    @RequestBody 붙였어??

    @RequestBody 붙였어??

    준비 해당 포스팅의 제목이 이렇게 붙여진 이유는... 내가 그런 실수를 저질렀기 때문이다. ㅠㅠ 그래서 나의 바보짓을 공개적인 곳에 올리면서 제대로 기억할 겸 포스팅한다. @RequestBody 애노테이션은 한마디로 HttpRequestBody를 Java객체로 매핑해주는 애노테이션이다. 덕분에 API 요청으로 전송받은 JSON 데이터를 (우리가 따로 조작하지 않고도) 객체로 변환해서 받을 수 있게 된다. '@RequestBody'가 뭐지? 애노테이션 이름이 말해주는 그대로, 요청(Request)의 Body를 연결해주는 역할을 한다. 웹 요청의 body에는 json 형태로 데이터가 전달되는데, 컨트롤러 메서드의 매개변수 앞에 애노테이션 @RequestBody를 붙이면 해당 객체가 웹 요청의 body와 매핑..