스웨거 typescript-api로 자동화 하는법 (Swagger)
·
Spring/Swagger
들어가며Sopt에서 Lococo를 개발하면서 스웨거가 단순히 문서화 툴일 뿐만 아니라, 클라쪽에서 자동화로 뽑아서 코드를 작성해줄 수 있는 툴이 있음을 알게되었었다. 그래서 NestJS의 공식 문서를 보다가, 흥미로운 내용이 있어서 포스팅을 작성하게 되었다. @nestjs/swagger, FastAPI, Springdoc-openapi 같은 것들이 대표적인데, 이런 프레임워크들은 컨트롤러/라우트 정의를 읽어서 OpenAPI 문서를 뽑아주기까지 할 수 있다.https://docs.nestjs.com/openapi/introduction Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficie..
Spring Boot 4.0 RC1 릴리즈 (Spring)
·
Spring/CS 개념
서론링크드인을 살펴보다가 2025년 10월 24일에 Spring Boot 버전이 메이저로 올라간 사실을 알게됐다. 정확히는 Spring Boot 4.0.0‑RC1이 릴리즈 되었다는 소식이었고, LTS(장기지원) 버전은 아니지만 메이저 버전 변경이라는 점에서 관심을 가지고 찾아보게 되었다. 이번 포스팅은 버전 4.0에서 주목할 만한 몇 가지 변경사항을 추려보고 앞으로 프로젝트 진행 시 참고할 만한 기능이 있는지, 그리고 Spring Boot가 어떤 방향으로 나아갈거같은지, 공유하고자 작성하게 되었다. (물론 RC 버전이라 확정이 아님을 감안해주면 좋을거같다본론2025년 10월 23일(미국 기준)에 Spring 공식 블로그에는 “Spring Boot 4.0.0‑RC1 available now”라는 글이 올..
Instagram Basic Display API vs Graph API 무슨 차이가 있을까 (OAuth)
·
Spring/OAuth
들어가며글로벌 크리에이터, 브랜드를 연결해주는 서비스 Lococo를 개발하면서, 크리에이터는 브랜드가 올린 "캠페인"이라는 것에 신청하고, 해당 제품에 대한 후기를 SNS에 업로드하는 로직이 있었다. 때문에 업로드한 SNS에 대한 정보를 가져오기 위해서는 SNS 연동이 필수적이였는데, 해당 포스팅은 Instagram 연동을 하면서 고민했었던 내용을 작성해보려한다본문인스타그램 연동을 위해 공식 문서를 봐도 공식문서를 보면, Facebook 로그인을 통한 Instagram API랑 Instagram 로그인을 통한 Instagram API가 별도로 존재하는걸 알 수 있었다. 이 글에서는 내가 겪었던 혼란 포인트들을 공유하면서, 상황에 따라서 어떤 플로우를 선택해야 하는지와 OAuth 차이를 정리해보려고한다로그..
userId를 매번 입력받지않고도 로그인한 유저 정보를 가져올 수 있을까 ? (JWT)
·
Spring/JWT
들어가며스프링 시큐리티는 SecurityContext에 인증 객체(Authentication)를 저장한다public String getCurrentUser() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // Principal 객체 (UserDetails 구현체) 가져오기 Object principal = authentication.getPrincipal(); if (principal instanceof UserDetails userDetails) { return "현재 로그인한 사용자: " + userDe..
슬랙 웹훅으로 신고하기 기능 구현하기 (Webhook)
·
Spring/Webhook
들어가며먼저 링크 서비스에 기획에 대해서 가볍게 설명하려고 한다Leenk 서비스는, Leets라는 동아리를 운영하는 입장에서 생각했을때 동아리 원들의 커뮤니케이션 수단을 개발해서 제공해준다면 어떨까 ?? 라는 생각이 들어 시작하게된 서비스다예쁜 디자인 + 랜딩 사이트 만들어주셔서 개큰감사 🙇🏻‍♂️ (Shout out to 도연, 한별)https://leets-makers.framer.website/ Leets MakersGachon University IT Collaboration Club, Leets Makers' Landing Page - Made by. Makers' Designer, Doaeng.leets-makers.framer.website동아리원들이 자유롭게 사진을 공유하고, 모각작과 ..
디스코드를 활용한 500 에러 알림 자동화 (Webhook)
·
Spring/Webhook
들어가며지금 해당 API 500 뜨는데 원인 알 수 있을까요지금 오류 로그 한번만 확인해주실래요 ??해당 API 500 뜨는데 원인이 뭘까요백엔드로 다른 파트와 개발을 진행하다보면, 플젝을 진행하면서 위와 비슷한 말들을 수도 없이 들었을 것이라고 생각한다. 물론 500 에러가 최대한 발생하지 않도록 세부적으로 예외처리를 최대한 처리해줘야 되겠지만, 비즈니스 로직단에서 잡을 수 없는 에러나 특수한 상황에서 발생하는 에러들은, 서비스단에서 예외를 던져주기보다는 GlobalExceptionHandler에서 처리되는 것으로 알고있다. 때문에 위처럼 커스텀되지 않은 상황에서의 에러는 500을 뱉게 된다 termius에 들어가서.... 서버 ssh 환경으로 들어간 뒤에.... dokcer 명령어를 입력해서.......
Line 소셜 로그인 (OAuth)
·
Spring/OAuth
서론먼저 카카오, 구글 OAuth는 전에 구현해본 적이 있었지만, LINE OAuth를 구현하게된 계기를 먼저 얘기해보려고 한다. 일단 SOPT에서 최종적으로하는 프로젝트의 주제가 일본고객을 대상으로 하는 K-뷰티 큐레이션 서비스였기때문에, 일본인 고객들이 우리 서비스의 주 타겟 층이였다일본내 Line 점유율 물론 소셜로그인에 대한 구체적인 비율을 직접적으로 공개하는 공식 통계는 없지만, 다양한 신뢰할 만한 데이터와 업계 리포트를 통해 LINE이 압도적으로 높은 소셜 네트워크 수단임을 알 수 있었다https://datareportal.com/reports/digital-2025-japan 위 통계를 보더라도, 압도적으로 LINE 점유율이 일본에서 높다는 사실을 알 수 있었기에, 사용자 진입 장벽을 낮추..
Refresh Token은 어떻게 관리할까 (JWT)
·
Spring/JWT
서론최근에 웹서비스를 개발할때는 REST API를 중심으로 클라이언트와 서버 간 상태를 최대한 분리하는 것을 지향한다. 이 과정에서 토큰 기반 인증(Token-based Authentication) 은 서버가 세션 상태를 유지하지 않으면서도, 클라이언트의 인증 정보를 안전하게 검증할 수 있는 방법인데, 오늘은 정말 여러가지 방법이 있는 Refresh Token 관리 방법에 대해서 다뤄보려고한다 토큰 기반 인증과 관리의 중요성토큰 기반 인증의 핵심은 “Access Token”랑 “Refresh Token”인데, 간단하게만 설명하자면Access Token: 비교적 짧은 유효기간(예: 5분~1시간)을 갖고, API 호출 시 Authorization: Bearer 헤더를 통해 서버가 클라이언트를 검증Refre..
OAuth의 개념과 필요성
·
Spring/OAuth
서론이번 포스팅에서는 우리가 구글, 애플, 카카오톡과 같은 소셜로그인을 구현할때도 접하지만, 실제 현업에서도 자주 접할 수 있다는 OAuth의 개념과 등장 배경, 그리고 왜 우리가 OAuth를 도입해야 하는지에 대한 이유에 대해 작성해보려고 한다 나도 앞서 말했듯이, 처음 OAuth를 접했을 때는 단순히 카카오 로그인"이나 구글 로그인 정도로만 이해했었는데, 실제로는 보안, 사용자 편의성, 서비스 간 연동 등 여러 이유로 필수적인 표준의 개념이 되었다는 걸 알게 되었다OAuth의 개념OAuth는 ?"Open Authorization"의 약자로, 인터넷 사용자들이 자신의 비밀번호를 제공하지 않고도, 다른 웹사이트나 애플리케이션(제3자 서비스)에게 자신의 정보에 대한 접근 권한을 안전하게 위임할 수 있도록 ..
AOP 기반 Lock 인터페이스 추상화, Redisson 분산락 적용 동시성 처리(Spring)
·
Spring/AOP
들어가며이번 포스팅에서는 100명의 사용자가 동시에 같은 게시글에 좋아요 또는 좋아요 취소를 누르는 상황에서 발생하는 예시 상황과 같은, 동시성 문제를 어떻게 해결할 수 있을지 다루어보려 한다 일단 내가 구현한 기능에서 좋아요는 인스타의 좋아요처럼 누르고, 다시 누르면 취소하는 로직이였다. 그래서 좋아요 수를 올리는 과정에서 락을 걸지 않으면, 동시에 여러 쓰레드나 요청이 동일한 데이터를 수정하면서 정합성 이나 데이터 유실 문제가 발생할 수 있다고 판단했어서 여러 방법을 고민하다가 분산락을 적용하는 방향으로 생각했다Redisson먼저 Redisson이 뭔지에 대해서 먼저 알아보자Redisson이란 ?자바 언어로 구현된 Redis 클라이언트 라이브러리이다. 주로 분산 시스템에서 동시성 문제를 해결하기 위해..