일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MYSQL
- 코틀린
- SW봉사
- 파이썬
- 스프링
- 프로그래머스
- kotlin
- 알고리즘
- CJ UNIT
- 소프티어
- 공부일지
- 데이터베이스
- 정보처리산업기사
- 코딩교육봉사
- 1과목
- 문제풀이
- 백준 알고리즘
- SQL
- 자바
- 백준알고리즘
- 코딩봉사
- java
- softeer
- programmers
- C++
- BFS
- 백준
- 시나공
- 회고
- python
- Today
- Total
목록개발/Spring, SpringBoot, JPA, Webflux (34)
JIE0025
✅ 선행 개념 먼저 비관적 락이 무엇인지에 대한 개념은 아래 글에 적어놓았다. https://jie0025.tistory.com/603 비관적 락은 무엇이고 왜/언제 사용할까? ✅ 비관적 락 ? DB관리에서 사용하는 기술 중 하나이다. 충돌이 발생할 것 같으니 조취를 취하자. 간단하게 설명하면 어떤 이용자 A 가 데이터를 Read/Write할 때, 미리 락(Lock)을 걸어서 다른 사용자 jie0025.tistory.com ✅ 동시에 API 요청 넣어보기 락을 사용하지 않았을때 발생하는 문제를 직접 눈으로 확인해보자. 동시 요청을 보내는 가장 간단한 방법이 있다. ⏺ curl 커맨드 ? CLI를 이용해 API 데이터를 요청할 수 있는, HTTP 클라이언트 도구 중 하나 * GET방식 옵션 없이 아래처럼 ..
✅ 개요스프링/스프링부트 프로젝트를 하다보면 Maven과 Gradle을 선택하는것부터 나온다. 초보자 시절엔 그냥 다른 블로그 따라서 Gradle을 선택했었는데... 좀더 세세하게 알아보자. ✅ Build Tool Maven, Gradle은 모두 빌드 관리도구이다. 우리는 프로젝트에 여러가지 외부 라이브러리를 사용하게 된다 이때 빌드 관리 도구 (Build Tool) 를 사용하여, 필요한 라이브러리를 자동으로 관리받을 수 있다. ⏺ Build Tool 작업 과정1) 종속성 다운 2) 소스코드를 바이너리코드로 컴파일 3) 패키징 4) 테스트 5) 프로덕션 시스템에 배포 ✅ Maven 메이븐은 자바 전용 프로젝트 관리 도구이다. Ant의 대안으로 만들어졌고, 아파치 라이센스로 배포되는 오픈소스 소프트웨어이다..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. ✅ 개요 이전에 프로젝트를 구현하기 위해 Webflux의 간단한 개요 정도만 이해를 했었는데 이번에는 리액티브 프로그래밍에 (Reactor)에 대해 조금 더 세세하게 개념을 이해해보자. ✅ 리액티브 프로그래밍의 구조 선언형 프로그래밍 방식을 사용한다. 명령형은 순차적으로 위에서 아래로 실행이 되는데, 선언형은 최종연산이 수행되는 메서드를 호출하지 않으면, 메서드 체인들이 실행되지 않는다. >> 이런작업을 하라는 람다 표현식만 넘기고, 최종 연산에서 동작을 수행함 Java 8부터 지원되는 Stream API의 예 int sum..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. ✅ 개요 웹플럭스(WebFlux)는 리액티브 프로그래밍을 기반으로 비동기/논블로킹을 구현할 수 있게 함으로써 대규모 트래픽이 발생할 수 있는 애플리케이션에서 성능 향상을 돕는다. 우리는 WebFlux를 공부하기 위해 가장 기초적인 개념을 공부해야한다. 리액티브란 무엇인지, 리액티브 스트림의 구성요소들에 대해 알아보자! ✅ Reactive 영어 자체를 해석하면 반응을 하는, 반응을 보이는 이란 의미이다. ✍️ Reactive System 리액티브 시스템 클라이언트의 요청에 반응을 잘 하는 시스템을 의미하게 된다. Non-Block..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. ✅ 개요 스프링 웹플럭스는 스프링5에 추가된 Reactive 스택이다. Reactor는 두가지 타입을 지원한다. Mono : 0개 또는 1개의 데이터만 emit Flux : n개의 데이터를 emit한다 오늘은 N개의 데이터를 emit하는 FLUX를 이용해 스트리밍으로 데이터를 처리하는 것에 대해 알아보자. ✅ Reacive Streaming 데이터처리 Spring Webflux는 SSE를 이용하여 데이터를 스트리밍 할 수 있다. SSE는 Spring 4.2부터 지원되었으며 Spring 5에서부턴, Reactor의 Publishe..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. 목차 Spring Webflux란? Spring Webflux 탄생 배경 예시를 통해 MVC와 WebFlux를 비교해보자 Spring Webflux Stack 전체 큰 그림 Spring Webflux의 내부 동작 원리 Netty의 역할 ✅ Spring Webflux란? Spring webflux는 리액티브 웹 애플리케이션 구현을 위해 Spring 5.0부터 지원되는 Reactive Web Framework ✅ Spring WebFlux 탄생 배경 ⏺ Spring MVC 서블릿기반의 Blocking I/O방식 요청당 하나의 스레드..
✅ webClient 스프링 5부터 도입된 웹 클라이언트 라이브러리 (HTTP 요청을 수행) 비동기/논블로킹 방식으로 외부 API를 호출할 수 있다. 😉 장점 비동기/논블로킹 방식을 지원하여, 높은 처리량과 확장성이 장점이다. 리액티브 프로그래밍을 할 수 있다. 데이터 스트림을 효과적으로 처리할 수 있다. 선언적 방식으로 API 호출을 정의하므로, 가독성이 좋다. 😵 단점 웹플럭스 학습곡선이 존재한다. ✅ 공식문서 & 참고 문서 공식문서에 웹클라이언트의 선언부터 사용방법이 자세하게 나와있다. https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-client Redirecting... docs..
✅ 개요 외부 API를 사용해야하는 상황이 생겨서 호출 방법에 고민을 하고 있다. 빠른 사용/개발을 위해서는 사용하고자 하는 API의 클라이언트 라이브러리 자체를 이용해도 되지만, 이 경우 특정 API에 종속되면서, 정책변경 및 가격변경에 영향을 받게 된다. 요구 스킬의 변화와 유연한 확장을 위해 외부 API를 호출하는 방법들을 선택해야 할듯 해 이 글을 적게 되었다. ✅ 외부 API를 호출을 위한 방법들 비교 외부 API 를 호출하고, 응답값을 받아오는 방법에는 5가지 정도가 있다. 각 기술의 장단점과 특징을 살펴보자 HttpURLConnection/URLConnection RestTemplate HttpClient WebClient OpenFeign 1️⃣ HttpURLConnection/URLCon..
✅ 개요 스프링부트가 어떻게 다중요청을 처리하는지에 대해 알아보자. 나는 이전에 스프링 내부 구조와 동작원리, 요청은 어떻게 처리되는가?에 대해 전체적으로 큰그림을 그린적이 있다. 그 그림은 요청이 들어왔을때, WAS, 필터와 필터체인(시큐리티필터) , Dispatcher servlet부터 Controller까지 가는것, JSON과 DTO의 변환, Mock요청의 경우는 어떻게 되는가? 인터셉터 등등 굉장히 다양한 주제를 한개의 그림에 함축하고 있었다. (지식을 확실하게 쌓고 나서 나중에 더 업데이트 해놔야지 ㅎㅎ) 당시 내가 다중유저 처리에 관해 알았던 것은 (그림중 오른쪽의 파란 부분을 보면 된다.) 1) 톰캣 내부에 스레드풀이 존재하고, 미리 스레드를 만들어둔 다음 2) 요청이 들어올 때마다 1개씩 ..
✅ 개요프로젝트 중에 N+1문제가 나올것을 예상했었고, 데모일이 끝나자마자 N+1문제를 마주해 대표적인 해결방법을 보고 해결을 해봤지만... 요청 응답에 대해 시간이 비슷하게 나오고, (데이터가 적어서 그랬을거라 생각한다) 성능상 개선된게 확실한지 고민을 하다가 3주가 지난 이제서야 글을 적는다. ✅ 선행지식 : ORM, JPA, HibernateN+1문제를 제대로 이해하기 위해선 당연히 사용기술에 대한 이해가 선행되어야한다. 위의 한줄을 위해 내가 직접 ORM, JPA, Hibernate에 대한 글을 작성했다... 아래 글을 보면서 간단하게 이해해보자. https://jie0025.tistory.com/517 ✅ N+1문제JPA를 사용하면서 개발자는 비즈니스 로직 개발에 집중할 수 있어졌지만 JPA의 ..