[Spring Boot] API 세분화에 대하여
·
Backend/Spring Boot & JPA
📕 목차 1. As-is 2. To-be 1. As-is 📌 기존 방식의 문제점 React를 사용하던 프론트와 협업할 때는 어차피 컴포넌트 별로 api를 호출할 테니, api도 프론트 측에서 요청하는 대로 세분화하여 설계했었다. 그런데, 앱 개발자와 협업하는데 리액트처럼 컴포넌트 개념을 적용할 수 없었다. 즉 하나의 View에 대한 모든 데이터를 넘겨줘야 하는데 문제점이 너무 많았다. 예를 들어, 하나의 View를 구성하기 위해 총 4개의 도메인 A, B, C, D에 대한 정보가 필요하다고 가정해보자. 📌 Client 시점 한 번의 요청으로 모든 데이터를 받을 수 있으니 좋다. 응답 데이터가 너무 커질 수 있어서 네트워크 관점에서 느릴 수도 있다. 응답을 받을 때까지 Client는 다음 동작을 수행할 수..
[Design Pattern] Strategy
·
Reference/Design Pattern
📕 목차 1. Strategy Pattern 2. 예시 코드 1. Strategy Pattern 📌 전략 패턴 정책 패턴(policy pattern)이라고도 한다. 실행(런타임) 중에 객체의 행위를 바꾸는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체하는 패턴 전략이란 일종의 알고리즘이며, 특정 목표를 수행하기 위한 기능이나 동작 계획을 말한다. 어떤 일을 수행하는 알고리즘이 여러가지 일 때, 변형이 빈번하게 필요한 경우 적합하다. 결제 방법은 네이버 페이, 카카오 페이 등 다양한 방법이 존재한다. OAuth 인증 방법은 네이버, 카카오, 구글, 애플 등 다양한 방법이 존재한다. 구조 클라이언트: 특정 전략 객체를 Context에 전달하여, 전략을 등록하거나 전략 알고리즘 실행 결과를 받는다...
[Design Pattern] Factory
·
Reference/Design Pattern
"헤더퍼스트 디자인패턴" + "면접을 위한 CS 전공 지식 노트"에 개인적인 의견과 생각들을 추가하여 작성한 포스팅이므로 틀린 내용이 있을 수 있습니다. (있다면 지적 부탁 드립니다.) 📕 목차 1. Legacy Client 2. Simple Factory 3. Factory Method Pattern 4. Dependency Injection 5. Dependency Inversion Principle 6. Abstract Factory Pattern 1. Legacy Client 📌 클라이언트가 피자 주문하기 public class LegacyPizzaStore { public Pizza orderPizza(String type) { Pizza pizza = null; if (type.equals("..
[Java] Lexical Scope와 Closure에 대한 고찰
·
Computer Science/Concept
어제 자려고 침대에 누웠는데, 갑자기 현업 개발자 분이 나에게 연쇄 질문을 던지셨다. "람다와 내부 함수의 차이를 알아?" "그럼, 람다/내부 함수와 클로저의 차이를 알아?" "람다를 외부에 전달할 수 있을까?" 여기까진 어찌저찌 기억을 더듬어서 잘 답변했는데, 그 다음 질문이 날 곧장 침대에서 일으켜 세웠다. "그럼 람다/내부함수를 외부 함수에 지역적으로 존재시킬 때, 람다/내부함수가 함수의 지역 변수인 외부 변수를 같이 들고간다면, 이 외부 변수는 언제까지 살아있어야 할까?" 자자, 차근차근 찢어봅시다. 📕 목차 1. 렉시컬 스코프(Lexical Scope) 2. 람다(Lambda) vs 클로저(Closure) 3. Closure가 외부 변수를 참조한 채로 다른 함수에 지역적으로 존재한다면? 1. 렉..