본문 바로가기

Dev

(26)
lombok @builder 간단한 class 하나 만드는데 VO, DTO, Entity 등의 class을 만들 때 getter/setter 함수 등을 기계적으로 생성했어야 했던 귀찮은 작업들을 위한 기술 getter/setter 자동 생성 라이브러리 라고 생각하면 됨. java 에서 @Getter, @Setter 같은 어노테이션 기반으로 관련 기존 DTO, VO, Domain Class 작성할 때, 멤버 변수에 대한 Getter/Setter Method, Equals(), hashCode(), toString() 과 같이 멤버 변수에 값을 설정하는 생성자 등등을 자동으로 생성해 주는 라이브러리 @NoArgsConstructor 파라미터가 없는 기본 생성자를 생성 @AllArgsConstructor 모든 필드 값을 ..
Query DSL 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크. 문자영로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 fluent API 를 이용해서 쿼리를 생성 가능 Querydsl은 SQL, JPQL을 코드로 작성할 수 있도록 도와주는 오픈소스 빌더 API 장점 IDE의 코드 자동 완성 기능을 사용. 문법적으로 잘못된 쿼리를 허용하지 않음. 컴파일 시점에 문법 오류 발견. 도메인 타입과 프로퍼티를 안전하게 참조. 도메인 타입의 리팩토링을 더 잘할 수 있음. 동적 쿼리 만들기 쉬움. 타입 안정성 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성. 완전히 타입에 안전한 방법으로 함수/메서드 호출이 이루어짐. 일관성 기반 기술에 상관없..
DDD & TDD Domain 일반적인 요구사항, 전문 용어, 그리고 컴퓨터 프로그래밍 분야에서 문제를 풀기 위해 설계된 어떤 소프트웨어 프로그램에 대한 기능성을 정희하는 연구의 한 영역 소프트웨어로 해결하고자 하는 문제 영역 Domain Model 특정 도메인을 개념적으로 표현한 것 도메인 모델을 사용하면 여러 관계자들 (개발자, 기획자, 사용자 등)이 동일한 모습으로 도메인을 이해하고 도메인 지식을 공유하는데 도움이 됨. 모델의 각 구성 요소는 특정 도메인을 한정할 때 비로소 의미가 완전해지기 때문에, 각 하위 도메인마다 별도로 모델을 만들어야 함. presentation layer 표현 영역 또는 UI 영역. 사용자의 요청을 받아 응용 영역에 전달하고, 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할 (Con..
JPA CascadeType CascadeType.PERSIST entity를 영속화 할 때 이 필드에 보유 된 entity도 유지. EntityManager가 flush 중에 새로운 entity를 참조하는 필드를 찾고 이 필드가 CascadeType.PERSIST를 사용하지 않으면 오류이므로 Cascade 규칙의 자유로운 적용을 제안함 CascadeType.MERGE entity 상태를 병합 할 때, 이 필드에 보유 된 entity도 병합 CascadeType.REFRESH entity를 새로 고칠 때, 이 필드에 보유 된 entity도 새로 고침. CascadeType.REMOVE entity를 삭제할 때, 이 필드에 보유된 entity 도 삭제 CascadeType.DETACH 부모 entity가 detach()를 수행하게 되..
Spring Cloud Gateway API Gateway 인증 / 모니터링 / 오케스트레이션 등과 같은 기능을 포함한 향상도니 Reverse Proxy API Gateway가 필요한 이유는 안전한 API유통과 Client 요청별로 유연하게 댗하기 위함. MSA에서 언급되는 컴포넌트 중 하나이며 모든 클라이언트 요청에 대한 endpoint를 통합하는 서버 마치 프록시 서버처럼 동작함 인증 및 권한 모니터링, loggin 등 추가적인 기능이 있음 모든 비즈니스 로직이 하나의 서버에 존재하는 Monolithic Architecture과 달리 MSA는 도메인별 데이터를 저장하고 도메인별로 하나 이상의 서버가 따로 존재함. 한 서비스에 한개 이상의 서버가 존재하기 때문에 이 서비스를 사용하는 클라이언트 입장에서는 다수의 endpoint가 생기게 되..
JWT Token JWT는 JSON Web Token의 약자로 전자 서명된 URL-safe(URL) JWT는 API 인증 등에 사용하는 토큰이므로 스펙에 인증하는 방버베 대한 내용은 적혀있지 않고 토큰을 어떻게 만들고 검증하는지에 대해서 나와 있다. ** Auth0에서 만든 JWT사이트가 참고하기 제일 좋음. 위 그림에서 보이 듯이 왼쪽은 토큰 오른쪽은 디코딩(복호화된)된 값이다. 빨간색 - 헤더 보라색 - 페이로드 JWT Claim Set 이라고도 함 하늘색 - 시그니쳐 JOSE 헤더 JWT 토큰을 어떻게 해석해야 하는지를 명시한 부분. 이 헤더르르 열어보고 이어서 설명할 JWT Claim Set이나 Signature를 어떻게 해석할지를 알 수 있음. JOSE 헤더의 값을 base64로 인ㅋ호딩해서 헤더를 생성함. JW..
Spring Security 스프링 시큐리티는 인증(Authenticate) 와 인가(Authorize) 과정을 쉽게 도와 주기 위한 라이브러리. 이 스프링 시큐리티는 필터 기반으로 동작하는데, 필터는 스프링의 디스패처에 오기 전 WAS에서 관리하는 ‘서블릿 필터’에서 동작하기 때문에, 스프링은 서블릿 필터들을 관리하기 위해서 ‘DelegatingFilterProxy’를 web.xml에 설정하여 스프링에서 설정한 서블릿 필터가 동작하도록 함. 해당 필터는 커스텀으로 만들 수도 있고, 이미 선언되어있는 기본적인 필터들을이용할 수도 있음. 해당 필터는 체이닝 방식으로 이루어짐 request context가 path matcher가 되는 필터가 있다면, 필터가 동작해서 인증을 수행하는 방식 주요 컴포넌트 AuthenticationWebF..
OSI 7 Layer Layer 1 - Physical Layer 주로 전기적, 기계적, 기능적인 특성을 이요해서 통신 ㅔ이블로 데이터를 전송 통신단위 bit 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경쓰지 않음. 대표적인 장비 : 통신 케이블, 리피터, 허브 Layer 2 - DataLink Layer 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할 통신에서의 오류도 찾아주고 재전송도 하는 기능을 갖고 있음 Mac 주소를 가지고 통신 전공되는 단위 : 프레임 대표적인 장비 : 브리지, 스위치 Point to Point간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC기반의 오류 제어와 흐름 제어가 필요 네트워크 위의 개체들 간 데이터를 전달하고 물리..