Backend & Spring (스프링) 10

Project Reactor 테스트

TestPublisher source = TestPublisher.createNoncompliant(TestPublisher.Violation.ALLOW_NULL); StepVerifier Operator 체인이 시나리오대로 동작하는지 테스트 StepVerifier .create(Mono.just("Hello Reactor")) // 테스트 대상 Sequence 생성 .expectNext("Hello Reactor") // emit 된 데이터 검증 .as("expect Hello Reactor") .expectComplete() // onComplete Signal 검증 .verify(); // 검증 실행. expectSubscription() expectComplete() expectError() ex..

Project Reactor 디버깅하기 - Debug Project Reactor

디버깅의 어려움기존의 Blocking 프로그래밍에서 Exception이 발생한 경우Exception의 Stacktrace 를 출력하여 확인하거나Breakpoint를 걸어서 문제가 발생한 원인을 단계적으로 찾아가면 되기 때문에 상대적으로 디버깅이 쉽다. 하지만 Reactor는 대부분 비동기적으로  실행되며 선언형 프로그래밍 방식으로 구성되므로 디버기이 쉽지 않다.이를 위해 Reactor에서 몇 가지 방법을 제공한다. 디버그 모드 (Debug Mode)Hooks.onOperatorDebug()Debug Mode 활성화하는 코드  static { fruits.put("banana", "바나나"); fruits.put("apple", "사과"); fruits.put("..

OAuth 2.0 & OIDC with JWT

Authorization (허가) Authentication (인증) 총 정리 - MAC AEAD 에 이어지는 글9. JWT (JSON Web Tokens)JWT는 Token 기반 인증에서 RFC 7519 의 표준으로 지정된 Token ※ Claim이란 어떠한 주제에 관해 주장하는 정보이며, name/value pair로 표시한다. 9-1. Javascript Object Signing and Encryption (JOSE)Claim을 안전하게 전송하기 위한 프레임워크 JWK, JWS, JWE, JWT 등을 포함한다. 9-2. JWK(Json Web Key): 암호화 키를 나타내는 Json Data 구조jwk = {'k': }위와 같이 표현되며, k가 key 혹은 password를 나타낸다. 9-3. J..

Authorization (허가) Authentication (인증) 총 정리 - MAC AEAD

1. Authorization과 Authentication- Authentication 이란 자신이 누구라고 주장하는 사람을 확인하는 절차- Authorization 이란 가고 싶은 곳으로 가도록 혹은 원하는 정보를 얻도록 허용하는 과정2. Why Authorization & Authentication ?- 당신의 서비스가 가지고 있는 정보가 소수의 사람들만의 비밀이거나 이들만을 위한 정보라면, 당신이 보길 원하는 사람만 정보(Resources)를 보도록 해야한다.이 페이지에서는 이러한 Resources를 보호하기 위해 많은 사람들이 사용하는 "표준적인" 방법을 정리한다. 3. Session 기반 인증이 페이지에서 Session 기반 인증은 자세히 다루지 않는다.- Client가 브라우저를 사용한다면 S..

Spring의 Inversion of Control (IoC) 과 Dependency Injection (DI)

1. Inversion of Control 제어의 주체가 사용자에서 Framework로 바뀌는 것이다. 스프링에서는 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트를 '빈 팩토리' (Spring에 의하여 생성되고 관리되는 자바 객체를 Bean) 이를 좀 더 확장한 개념을 '애플리케이션 컨텍스트'라고 부른다. 빈팩토리 : 빈을 생성하고 관계를 설정하는 IoC의 기본 기능 애플리케이션 컨텍스트 : 애플리케이션 전반에 걸쳐 모든 제어 작업을 담당하는 IoC 엔진 아래 방법들을 이용해 IoC를 구현한다. Service Locator Pattern Dependency Injection contextualized lookup template method design pattern strategy des..

Spring Data JPA와 Hibernate. 그리고 Persistence

1. Spring Data JPA, JPA, Hibernate와 JDBC JPA (JAVA Persistence API): 자바에서 ORM에 대한 API 표준 명세(Interface)(ORM: Object Relational Mapping, OOP 언어에서 관계형 데이터베이스를 사용하는 방식)예를 들면 SELECT * FROM user; -> user.findAll()Interface만 정의한 부분이기때문에 실제 구현부는 HIbernate 등 여러가지 중 선택할 수 있다.일반적으로 HIbernate를 사용. Hibernate: JPA의 구현체. JPA에서 사용되는 EntityManager, EntityManagerFactory와 EntityTransaction 등을 JDBC 기반으로 구현.실제 구현 부분..

Spring Framework

1. Spring MVC DispatcherServlet 1. Client로부터 Request가 오면 Dispatcher Servlet 2. DispatcherServlet은 파라미터 정보, URL 등을 참고하여 HandlerMapping를 통해 해당 Request가 매핑된 Controller가 있는지 확인한 후, 어떤 Controller에서 처리할지 결정합니다. 3. Controller가 결정되었다면 DispatcherServlet은 해당 Request 정보가 담긴 오브젝트를 HandlerMapping으로 넘기고, 여기서 해당 Controller로 전달해줍니다. 4. Controller가 작업을 완료하면 그 결과를 다시 DispatcherServlet에 전달합니다. 5. 전달 받은 결과를 바탕으로 Di..

Spring Boot이란?

1. Spring Boot 이란? Production 레벨의 stand-alone application을 "run" 명령어 만을 이용하여 만들 수 있게 해준다. 2. Spring Boot의 특징 - stand-alone spinrg application을 만들어준다. - War 파일없이 Embedded Tomcat, jetty와 Undertow를 바로 사용할 수 있게 해준다. - build configuration을 쉽게 하기 위하여 "starter" dependency들을 제공한다. - Spring과 3rd party 라이브러리들을 쉽게 어디서나 사용할 수 있게 해준다. - metrics나 health check 등 producion-ready를 체크할 수 있는 기능을 제공한다. ( https://do..

Spring 이란?

1. Spring이란 자바 프로그래밍을 더 빠르고 쉽게 해주는 것이다. Speed, Simplicity와 Productivity에 중점을 두는 세계 최대의 Java Framework이다. “We use a lot of the tools that come with the Spring framework and reap the benefits of having a lot of the out of the box solutions, and not having to worry about writing a ton of additional code—so that really saves us some time and energy.” - SEAN GRAHAM, APPLICATION TRANSFORMATION LEAD, D..

API 게이트웨이와 Spring Cloud Zuul Filter

1. API Gateway API Gateway란 마이크로서비스 아키텍처(Microservice Architecture, MSA)에서 여러 클라이언트 요청을 적절한 서비스로 프록시하거나 라우팅하기 위한 서비스이다. MSA 개념이 대중화된 지금 API Gateway의 중요성도 더 커지고 있다. MSA에서는 도메인별로 하나 이상의 서비스와 그에 따른 서버가 존재하기 때문에 이 서비스를 사용하는 클라이언트 입장에서는 다수의 end point가 생기게 되며, 관리하기가 힘들다. 그래서 MSA 환경에서 서비스에 대한 도메인을 하나로 통합할 수 있는 API Gateway가 필요하다. API Gateway는 일반적으로 아래 역할을 수행한다. 트래픽 관리, CORS 지원, 권한 부여 및 액세스 제어, 제한, 모니터링 ..

반응형