본문 바로가기

728x90
반응형

전체 글

(349)
[품앗이] FastAPI에 적용했던 두 가지 포인트 FastAPI에서 Controller를 Class로 만들어버리기FastAPI는 CBV(Class-Based View)를 공식적으로 제공하지 않는다. 따라서 기본적으로 함수 기반으로 Controller를 작성하게 되며, 이 과정에서 “관련된 요청들을 어떤 기준으로 묶어야 할까?”라는 고민을 하게 된다. FastAPI-Utils 라이브러리를 활용하면 CBV 구성은 가능하다. 하지만 단순히 CBV를 위해 여러 기능이 포함된 외부 라이브러리를 도입하는 것이 적절한지 의문이 들었다. 그래서 라이브러리 없이 해결할 수 있는 방법을 탐색했다.그 결과, Controller 함수에 @staticmethod 데코레이터를 적용하면 Class로 묶을 수 있다는 점을 확인했다. 예시는 다음과 같다.class AccountMen..
Spring Boot에서 HTTP Request & Response Logging 하기 개요기 작성된 코드를 보다가 Interceptor 부분에서 getInputStream()을 통해 데이터를 읽어들인 코드를 발견했다. Interceptor에서 Request를 읽어들여 Map 객체에 저장한뒤 Controller에서 이를 꺼내서 사용하는 방식인 셈이다. 이 방식은 Request Context가 Map 객체에 들어있기 때문에 키를 유추할 수 없을 뿐더러 접근성이 떨어진다고 판단하여 Dto를 활용한 리팩터링 방식을 적용하려 시도했다. 그러나 문제가 있었다. Interceptor에서 한번 getInputStream()을 통해서 읽어들인 데이터는 다시 사용할 수 없는 현상이었다. 쉽게 말하면 Interceptor에서 읽었으니 Controller에서는 Dto에 Request 데이터 매핑이 일어나지 않..
[품앗이] FastAPI 아키텍처 어떻게 가져갈 것인가? 2025.11.03 - [개발 노트/Experience] - 사이드 프로젝트를 정리하며 사이드 프로젝트를 정리하며개요올해 2월 1일부터 11월 1일까지 사이드 프로젝트를 진행했다. 본업에서 할 수 있는 시도에는 여러 제약이 있었고, 그 한계를 본업 밖에서 풀어보고자 하는 목적이 있었다. 본업에서는 쉽게 경jakpentest.tistory.com FastAPI로 품앗이를 만들면서 시도했던 부분 중 하나는, 파이썬에서도 객체 기반으로 코드를 잘게 나눠보자는 시도였다. 개인적인 생각이지만, 파이썬의 특성이 빠른 생산성과 결과 중심에 맞춰져 있어서인지, 구글링을 해보면 대부분 함수 형태 중심의 코드가 작성된 것을 볼 수 있었다. “왜 그럴까?”라는 의문이 생겼고, 그 시작에는 Spring MVC와의 비교가 있었..
[품앗이] JWK로 OAuth2 토큰 검증하기 2025.11.03 - [개발 노트/Experience] - 사이드 프로젝트 품앗이를 정리하며JWK로 OAuth2 토큰 검증하기품앗이의 로그인은 사용자 편의를 위한 카카오 로그인이다. 즉, OAuth2 방식인 셈이다. 카카오 로그인 구현과 관련된 내용은 내 블로그에서 이미 다룬 바 있어, 여기서는 생략한다. 늘 구현하던 카카오 로그인이지만, 이번에는 실제 사용자를 대상으로 했기 때문에 한 가지를 더 고민해야 했다. 바로 “프론트에서 전달되는 카카오 토큰을 믿을 수 있는가?”이다. 사실 API를 호출하는 주체는 프론트 측이기 때문에, 편의상 이를 프론트라고 부르겠다. 품앗이 프로젝트에서는 프론트에서 카카오 로그인 토큰을 받아 백엔드에 전달하면, 백엔드 API에서 사용할 수 있는 토큰으로 교환해주는 방식이다..
사이드 프로젝트를 정리하며 개요올해 2월 1일부터 11월 1일까지 사이드 프로젝트를 진행했다. 본업에서 할 수 있는 시도에는 여러 제약이 있었고, 그 한계를 본업 밖에서 풀어보고자 하는 목적이 있었다. 본업에서는 쉽게 경험할 수 없는 프로젝트 코드 아키텍처 구성과 다양한 기술 적용을 시도하며, 스스로 발전할 수 있는 시간을 갖기 위함이었다. 그런 관점에서 보면 이것저것 많은 시도를 해본 것 같다. 다만 프로젝트가 완성되어 유의미한 성과로 강조할 만한 결과가 없다는 점은 아쉬움으로 남는다. 사이드 프로젝트 치고는 꽤 긴 시간을 들였기에, 그동안 이 프로젝트에서 내가 어떤 시도를 했는지 남겨보고자 한다. 프로젝트 관점무슨 프로젝트였나?진행한 프로젝트는 “품앗이”이라는 이름으로 불리며 개발 관련 멘토링 플랫폼이다. 현업 개발자들에게 ..
실무로 통하는 웹 API "한빛미디어 서평단 활동을 위해서 책을 협찬 받아 작성된 서평입니다."https://www.hanbit.co.kr/store/books/look.php?p_code=B6294432947 실무로 통하는 웹 API실무에 바로 통하는 웹 API, 예제로 배우는 가장 실용적인 활용법www.hanbit.co.kr 대학교 시절, 어느 연구실에 소속되어 처음으로 실시간으로 변화하는 데이터를 시각화하는 대시보드 메인 페이지를 만들어야 했던 경험이 있다. 당시 나는 개발 지식도, 기본 개념조차도 제대로 알지 못한 상태였다. 그저 “어떻게든 화면에 변화를 보여줘야 한다”라는 막연한 목표 하나만 가지고 시작했는데, 그 과정에서 선택한 것이 바로 JavaScript에서 제공하는 XMLHTTPRequest API였다. 하..
[Review] 아키텍트 첫 걸음 "한빛미디어 서평단 활동을 위해서 책을 협찬받아 작성된 서평입니다." https://www.hanbit.co.kr/store/books/look.php?p_code=B4982465193 아키텍트 첫걸음아키텍트, 누구나 될 수 있지만 아무나 될 수 없다. 가치 있는 아키텍처를 만드는 진짜 아키텍트로 가는 첫걸음www.hanbit.co.kr 지난 개발 경험 동안 나에게 “아키텍트”라는 단어는 늘 “어떻게 개발을 해야 할까”라는 물음을 던지는 일종의 트리거 같은 존재였다. 그래서 “아키텍트”나 “아키텍처” 관련 서적을 읽을 때마다 자연스럽게 “아키텍트는 어떻게 되는 걸까”라는 생각을 곱씹곤 했다. “아키텍트는 어떤 모습이어야 하는가”라는 질문을 던지다 보면, 곧 “그렇다면 아키텍트가 되려면 무엇을 공부..
Named Parameter와 Builder Pattern 요새 Java 코드를 볼 일이 부쩍 늘어났다. 회사에서 사용하는 언어가 Java이기 때문에 당연한 일이 아닌가 싶다. 이제껏 신명 나게 Python을 사용하다가 Java를 보려니 눈에 안 익기도 하고 Java에도 이런 건 있겠지 하던 게 없다거나 해서 마치 다른 문화를 접하는 듯싶다. 각설하고 이 글에서 이야기할 부분은 바로 Named Parameter에 관한 부분이다. 우선 Named Parameter가 뭔지부터 알아보자. Named Parameter는 Python을 쓰면서 자주 애용하는 방법인데 다음과 같이 함수의 파라미터를 호출하는 쪽에서 해당 파라미터의 이름을 특정해 넘기는 방식이다.def method(name, age): print(name, age) method(name='jako', ag..

728x90
반응형