본문 바로가기

개발

(35)
#3) Spring WebFlux(마블 다이어그램, Project Reactor, Backpressure) Reactor는 Spring Framwork의 주도하에 개발된 리액티브 스트림즈 구현체로 Spring 5버전부터 리액티브 스택에 포함되었다. Spring WebFlux 기반의 리액티브 어플리케이션 제작의 핵심 역할이다. 따라서 Reactor Core 라이브러리는 Spring WebFlux에 라이브러리로 포함되어 있다. 우선 마블 다이어그램에 대해서 익히고 이를 기반삼아 Reactor를 공부하는게 좋다. 1. 마블 다이어그램 마블은 구슬을 의미한다. 즉 여러 가지 구슬 도형으로 구성된 도표를 의미하고 Reactor에서 지원하는 Operator를 이해하는데 중요한 역할을 한다. 기본 구성 1. 두개의 타임라인이 위아래로 존재하는데 위부분은 Upstream이 데이터를 emit하는 타임라인이고 아래 부분 ..
#2) Spring WebFlux(리액티브 프로그래밍 특징, 리액티브 스트림즈) 리액티브 프로그래밍 특징 1. 선언형 프로그래밍 - 명령형 프로그래밍 vs 선언형 프로그래밍 : 간단하게 요약하자면 명령형 프로그래밍 방식은 실행할 동작을 구체적으로 명시하는 방식 선언형 프로그래밍은 실행할 동작을 구체적으로 명시하는게 아닌 목표만 선언하는 방식 2. 코드 구성 - Publisher : 입력으로 들어오는 데이터를 제공하는 역할 - Subscriber : Publisher가 제공하는 데이터를 사용하는 주체 - Data Source : Publisher의 입력으로 전달되는 데이터 - Operator : Publisher와 Subscriber 사이에서 데이터를 적절하게 가공 처리하는 담당 리액티브 스트림즈 리액티브한 코드 구성을 용이하게 해주는 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 ..
#1) Spring WebFlux (함수 호출 관점 동기/비동기 Blocking/Non-Blocking, 함수형 인터페이스, WebFlux 장점) 함수 호출 관점에서 동기와 비동기 / Blocking과 Non-Blocking - 함수가 다른 함수를 호출 하는 상황일 때 caller: 호출 하는 함수 callee: 호출 당하는 함수 동기: caller는 callee의 결과에 관심이 있고 callee가 주는 결과 값을 이용해서 다음 action을 수행한다. 비동기: caller는 callee의 결과에 관심이 없고 callee는 결과 값을 이용하여 콜백을 수행한다. Blocking: callee를 호출 후, callee가 완료되기 전까지 caller는 아무것도 할 수 없다. 즉 제어권을 callee에게 줌, caller와 다른 별도의 스레드가 필요하지 않다. Non-Blocking: callee를 호출 후, callee가 완료되기 전에도 caller는..
Spring WebFlux 공부 시작 블로그 관리를 너무 안했.... 앞으로는 공부한 내용을 간단하게라도 꾸준히 적어보도록 노력하고자 한다!! 다시 돌아간 회사에서 신규팀 그리고 신규 프로젝트에 참여하였고 오픈한지 한달정도 지났다. 그리고 1월쯤 다시 새로운 프로젝트를 들어갈 예정인데 우리팀에 리더분이 리액티브 프로그래밍에 대한 장점을 열정적으로 전파해서 신규 프로젝트엔 webFlux기반으로 프로그램을 만들어 보기로 했다. 이번 프로젝트 때 간단하게 webFlux를 적용해서 개발한 부분이 있었지만 아주 미약한 지식으로 만든거라고 생각이 들었고 좀 더 깊게 공부를 해야겠다는 생각이 들었다..!! 패스트캠퍼스 웹플럭스 강의를 하나 팀원분이 끊었는데 공유해주셨다. 멋쟁이 개발자가 되기위해 완강해보자..아자아자 화이팅
#2) Spring Security Oauth2 Client + Apple 로그인 연동하기 build.gradle implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: '5.6.3' implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.30.1' implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.70' application.yml application-oauth.yml를 include 한다. (application.yml에 spring security oauth2 client를 설정했다면 무시) sp..
#1) Spring Security Oauth2 Client + Apple 로그인 연동하기 이번에 인증 서버를 구축하면서 총 5개의 SNS 연동을 진행했다. (카카오, 네이버, 페이스북, 구글, 애플) 카카오, 네이버, 페이스북, 구글은 Spring Security Oauth2 Client로 연동하는 레퍼런스가 많아서 수월하게 진행했는데 애플은 다른 Provider(제공자 : 예를 들면 카카오, 네이버)의 OAuth2 인증방식과 다른 방식으로 사용자 정보를 넘기고 있어서 레퍼런스도 없고 해외에도 연동 예제가 없었다. 그래서 그냥 라이브러리를 분석해서 나의 방식대로 애플을 연동했는데 애플 로그인을 Spring Security Oauth2 Client에 연동하고자 하는 이들이 있으면 도움이 되고 싶어서 그 과정을 기록하고자 한다. 먼저 대부분의 Provider는 다음 그림과 같은 방식으로 동작한..
JWT(Json Web Token) 를 알아보자 JWT란? JWT는 JSON 객체를 사용해서 유저를 인증하고 식별하기 위한 토큰기반 인증이다. 토큰 자체에 정보를 포함하고 있으며 세션처럼 서버에 저장할 필요가 없고 요청시 HTTP 헤더에 토큰을 첨부하면 데이터 요청과 응답을 할 수 있다. JWT는 JSON을 Base64 URL-safe Encode를 통해 인코딩해서 직렬화하며 위변조 방지를 위한 전자서명이 포함된다. 개인키(시크릿키)를 통해 검증을 하며 검증이 완료되면 요청한 응답을 돌려준다. JWT로 로그인을 구현한다면 다음과 같은 순서로 진행된다. 1. 클라이언트가 아이디와 패스워드를 입력 후 인증 2. 서버에서 아이디와 패스워드가 정확하다면 서명된(Signed) JWT을 생성 후 클라이언트에 전달 3. 로그인 성공 후 클라이언트가 서버를 호출할 ..
웹훅(webhook)에 대해서 웹훅은 '역방향 API' 라고도 한다. 이는 웹훅 서버에 어떠한 이벤트가 발생했을 때 클라이언트를 호출한다. 일반적인 API는 클라이언트가 서버를 호출하면 그에 맞는 응답을 서버가 주는데 반대라고 보면된다. 사용하는 이유 만약에 A쇼핑몰에 신규회원이 등록되면 B업체에서 감사하다는 메일을 보내주기로 했다. 그렇다면 B업체는 A쇼핑몰에 주기적으로 신규회원이 있는지 확인하는 API를 호출해서 신규회원이 있다면 메일을 보내고 없다면 다시 신규회원이 있는지 주기적으로 API를 호출해서 확인할 것이다. 만약 웹훅을 사용한다면 이러한 다량의 API 호출을 줄일 수 있다. A쇼핑몰에서 신규회원이 등록되면 웹훅으로 B업체 CallBackUrl을 호출하여 신규회원이 등록되었다는 정보를 준다. 그럼 B업체는 그 호출에 대해..

반응형