전체 글

Develop/Etc

[Design Pattern] Facade 패턴과 이모저모

개요 최근 좋은 기회로 새로운 팀에 합류하게 되었다🚀 사이드 프로젝트를 진행하기 위해 백엔드 개발 방식을 논의하던 중, 아래와 같은 제안을 마주했다. Facade 컴포넌트..? Facade 패턴을 책에서 읽긴 했지만, 스프링 부트 프로젝트를 하면서 직접 사용해 본 적은 없어서 감이 쫌 안잡혔다. Interface와 Implementation으로 나누는 거랑 크게 다른건가? 🤔 그래서 오늘은 퍼사드 패턴에 대해 다시 한 번 복기하고, SRP 원칙과 연관하여 살펴보려고 한다 🚀 퍼사드 패턴 (Facade Pattern) 일단 스프링에 퍼사드를 적용하기 전에 퍼사드 패턴이 뭔지부터 알아보자. 퍼사드 패턴의 정의는 아래와 같다. 서브 시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶는 것. 고수준 인터페이..

Develop/Kotlin

[Kotlin] 코틀린을 쌈싸먹어 보자 (2) - 계산기 프로그램 만들기

개요 코틀린을 쌈싸먹자고 다짐한지 벌써 1달.. 놀랍게도 앞서 올렸던 포스트 이후로 단 한 번도 코틀린을 공부하지 않았다 😇 프레임워크는 공부하는게 마냥 재밌는데, 프로그래밍 언어 (코틀린)는 왜 손이 잘 안갈까 고민을 하다가, 공식 문서를 보고 목차 하나하나씩 따라가는 공부법이 좀 루즈해서 관심이 가지 않는다는 결론을 내렸다. 아예 내가 개발을 처음 해보고, 사용할 수 있는 프로그래밍 언어가 하나도 없다면 물론 공식 문서를 보며 차근차근 이해하는게 좋다. 하지만 내가 이미 몇 가지 프로그래밍 언어를 다룰 줄 안다면, 그리고 새로운 언어로 당장 개발을 시작해야 한다면 꼭 고급 문법들을 알아야 할 필요는 없을 것 같다. (Ex. Java로 간단한 계산기 프로그램을 만든다고 가정했을 때, synchroniz..

Develop/Spring

[Spring Boot] Auto Increment PK Id를 노출하지 않으면서 API에 활용하는 방법

개요 평화로운 사이드 프로젝트 개발 중 팀원이 요런 코멘트를 남겨주셨다. /api/v1/users/1 < 같은 느낌으로 특정 데이터의 PK가 path variable 등 외부에 노출되는 것이 권장되지 않는다는 요지의 코멘트였다. 이때 당시에는 JWT를 이용하는 방식으로 바꿀 예정 & PK ID외에 데이터를 특정할 수 있는 방법이 마땅찮음 & 정확히 보안상의 어떤 원인이 있는지 파악 불가 등의 이유로 나중에 고민해보자! 하고 넘어갔었다. 나중에 다시 의논해보자고 했던 것이 어언 3월.. 잊고 있었던 요 코멘트가 불현득 떠올라 이번 포스팅에서 파헤쳐 보려 한다. 외부에 노출되는 PK 우리는 위와 같이 생긴 REST API를 숱하게 만들고, 사용하고, 주변에서 찾아볼 수 있다. REST의 개념 자체가 URI로..

Develop/Spring

[Spring Boot] 자바 스프링에서 처리율 제한 기능을 구현하는 4가지 방법

개요 스마트폰 어플에서 우다다다 버튼을 누르다보면 가끔 아래와 같은 메세지를 마주할 수 있다. 이런 기능들은 대부분의 사이트에서 만나볼 수 있는데, 보통 서버 안정을 위해 필수적으로 탑재하는 기능이다. 전문 용어로 처리율 제한 장치 (= Rate limiter = API Throttling)라고 부르는 이 친구, 내가 만들어 볼 순 없을까? 처리율 제한 장치와 더불어 Spring Boot에서 처리율 제한 기능을 구현할 수 있는 다양한 Java 라이브러리도 알아보자! ⚡️ 본 포스팅은 구현보다는 방법의 종류에 대해 전반적으로 알아보는 것을 목적으로 합니다 :) 실습은 Java11 / Spring Boot 2.7.6 / Gradle 8 환경에서 진행합니다. 처리율 제한 장치 (Rate Limiter = AP..

스껄한우디
호그와트 장학생