Backend

    [Spring Boot] iOS와 Kakao OAuth2 OIDC 인증

    📕 목차 1. iOS Kakao OAuth2 인증 정책 리스트 2. Security Policy 3. Implementation 1. iOS Kakao OAuth2 인증 정책 리스트 📌 Introduce iOS 앱에서 Kakao OAuth2를 사용하려고 했는데, 웹 프론트와 연동할 때와 마찬가지로 code를 이용해서 OAuth2 인증 과정을 수행하려고 보니 이 방식으로는 구현할 수가 없다는 문제가 있었다. 네이티브 앱 환경에선 대부분 accessToken까지 프론트에서 강제로 받아와 버린다. 그래서 iOS와 Kakao OAuth2 인증을 위한 여러가지 대안책들을 고민해보고, 최종 선정한 정책으로 구현하는 과정을 기록해둔다. 1️⃣ iOS에서 code를 Server로 전달 웹 프론트와 협업할 때 가장 일반..

    [Spring Boot] API 세분화에 대하여

    📕 목차 1. As-is 2. To-be 1. As-is 📌 기존 방식의 문제점 React를 사용하던 프론트와 협업할 때는 어차피 컴포넌트 별로 api를 호출할 테니, api도 프론트 측에서 요청하는 대로 세분화하여 설계했었다. 그런데, 앱 개발자와 협업하는데 리액트처럼 컴포넌트 개념을 적용할 수 없었다. 즉 하나의 View에 대한 모든 데이터를 넘겨줘야 하는데 문제점이 너무 많았다. 예를 들어, 하나의 View를 구성하기 위해 총 4개의 도메인 A, B, C, D에 대한 정보가 필요하다고 가정해보자. 📌 Client 시점 한 번의 요청으로 모든 데이터를 받을 수 있으니 좋다. 응답 데이터가 너무 커질 수 있어서 네트워크 관점에서 느릴 수도 있다. 응답을 받을 때까지 Client는 다음 동작을 수행할 수..

    [Spring Boot] Service Layer 분리에 대하여

    1. As-is. Service 계층의 순환 참조 Spring을 가장 처음 배우면, Web Application 5계층에 대해서 배우게 된다. 그리고 User라는 Domain에 대해 코드를 작성하면 아래 클래스들을 작성하고 시작한다. UserController UserService UserRepository UserDto 간단한 CRUD 기능만을 구현할 거라면 전혀 문제가 되지 않지만, 복잡한 Use case에 대한 비지니스 로직을 처리해야 하는 경우 Service가 Service를 호출하여 순조롭게 순환참조로 Application이 오작동 하는 상황을 마주할 수 있게 된다. 예를 들어, 내가 (처음) 구현했던 JWT을 이용해 로그아웃 과정을 수행하려면 다음 일련의 작업을 수행해야 했다. Client로부..

    [MySQL] goormIDE에 MySQL 서버 구축하기

    💡 해당 포스팅은 2021년 10월 8일 이전에 등록한 goorm 계정이 있어야 합니다. 현재 진행 중인 개인 프로젝트가 있는데, 클라우드에서 지원하는 MySQL을 사용하자니 요금이 어마무시하게 청구가 되길래 고민하던 중 goormIDE에서 컨테이너 1개를 무료로 제공해준다는 사실을 알게되어, DB 서버로 사용하게 되었다. 이로써 AWS를 빌드 서버로 만들고, NCP를 배포 서버, goorm을 DB 서버로 만드는 대환장 아키텍처를 실현할 수 있게 되었다. ㅋㅋㅋㅋㅋ 구름HOME 구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다. www.goorm.io 위 링크에서 회원가입을 하고 컨테이너를 생성해주어야 한다. 나는 이미 ..