본문 바로가기

분류 전체보기66

여러 플랫폼에 대응할 수 있는 OAuth 코드로 개선하기 이전 글에서 SpringSecurity가 OAuth 로그인을 처리하는 과정을 디버깅을 통해 학습했습니다. 학습경험을 바탕으로 식도락 프로젝트의 기존 OAuth 로그인 코드를 개선한 과정에 대해 글을 써보려 합니다. 기존의 문제점 카카오 로그인에 의존적이며 확장에 닫혀있는 코드. 새로운 플랫폼을 지원하도록 확장하기 위해서는 요청을 보내는 클라이언트뿐만 아니라 비즈니스로직이 담긴 서비스 클래스까지 변경이 발생합니다. 또한 추가적으로 작성해야되는 클래스가 너무 많이 필요합니다. Properties 클래스의 주입. 기존의 서비스 코드에서는 카카오api 사용에 필요한 정보를 담은 KakaoProperties 클래스를 직접 주입받아서 사용하고 있었습니다. 즉, 새로운 플랫폼을 지원할때마다 주입받아야하는 클래스가 늘.. 2023. 6. 4.
SpringSecurity가 OAuth 로그인을 처리하는 과정 파헤치기 서론 저는 이전에 참여했던 사이드 프로젝트 에서 OAuth 로그인 개발을 담당했습니다. 그리고 이번에 프로젝트 리팩토링을 계획하면서 가장 마음에 안들던 로그인 관련 코드를 개선하기로 결정했습니다. 최초 기획에서는 카카오 로그인만을 사용하기로 했기 때문에 카카오 로그인에 맞게 코드를 작성하였고, 현재 로그인 관련 코드는 카카오 로그인에 종속적인 코드입니다. 때문에 새로운 로그인 방식을 도입하기에도 까다로운 상황이라 이번 기회에 OAuth 로그인 관련 코드를 개선하기로 했습니다. OAuth 관련 클래스들을 추상화하기 위해 고민하던 중 SpringSecurity에서는 어떻게 여러개의 플랫폼에 쉽게 대응할 수 있도록 했는지, 실제 내부 동작은 어떻게 동작하는지 궁금해졌고 그래서 디버깅을 통해 내부 동작을 학습해.. 2023. 3. 5.
offset과 no offset을 사용한 페이징 성능 차이 분석 서론 최근 진행했던 식도락 프로젝트에서 유저의 피드 목록을 페이징 처리를 하여 제공하는 api를 개발했습니다. 해당 api는 sns 특성상 페이지 단위로 제공하기보다는 무한 스크롤 형식에 최근 작성한 순서로 데이터를 제공해야 했습니다. 페이징 방식을 고민하던 중 offset과 no-offset 방식이 있고 offset 방식을 사용하면 매번 full-scan을 하여 성능적으로 좋지 않다는 것을 알게 되어 개발 당시에는 곧바로 no-offset 방식을 도입하여 개발하였습니다. 하지만 실제로 offset 방식과 no-offset 방식의 성능 차이가 얼마나 나는지 눈으로 확인하기 위해 두가지 방식을 모두 적용하여 성능을 비교해보기로 하였습니다. offset이란? offset 이란 sql에서 조회를 시작할 기준점.. 2023. 1. 6.
Gradle 맛보기 이번에 식도락 프로젝트를 진행하는 과정에서 빌드 시 submodule의 파일들을 복사하는 task를 추가하는 작업을 맡았습니다. 쿠킴의 레퍼런스 덕분에 작업 자체는 수월했지만, gradle에 대해 거의 모르다보니 build와의 의존관계설정을 설정해주지 않아서 동작하지 않았던 경험이 있었습니다. 또한 Jay가 작성한 restdocs 관련 task도 설명없이는 이해하지 못했고 답답함을 느껴 이번 기회에 정리해보았습니다. 빌드란 무엇인가요? 개발자가 만든 애플리케이션을 컴퓨터에서 구동하기 위해서는 변환작업이 필요합니다. Java 애플리케이션의 경우 2가지 단계를 거치게 됩니다. 컴파일 : 소스코드를 바이트코드로 변환 링킹 : 바이트코드를 의존하고 있는 라이브러리들과 함께 하나의 파일로 압축하는 과정 빌드 도구.. 2022. 11. 20.