-
webflux로 개발하면서 공부하면 좋을 것 같은 목록흔적 2021. 2. 11. 11:21반응형
1. 프로젝트 전체를 webflux로 개발하다.
물론 전에 자동완성 api를 webflux(tomcat 구조 안에서)로 개발은 했지만 프로젝트 전체를 개발 하기는 처음이였다.
검색개발팀에서 새로운 프로젝트를 webflux로 개발을 하였고 프로젝트 이번 프로젝트는 구조나 첫 개발은 혼자 진행하였다
해당 프로젝트가 처리하는 데이터는 정적 배치, 동적 배치, 실시간 데이터 반영(CDC)를 처리하는 api이다
그래서 많은 요청을 처리 할 수 있는 구조를 찾았고 webflux로 정하였다
2.
개발하면서 많은 많은 시행착오가 있었지만
그것은 있을지 모르는 다음? 글에서 적도록 하고
이번에는 개발을 하면서 어떤 것을 참고했고 참고한 것 중에서 이것을 알고 개발 하면 더 좋을 것 같은 다른 블로거 분들의 링크를 남기도록 하겠다!
webflux 개발을 시작하려는 분들이 보고 그래도 도움이 되었으면 좋겠다!
3. 참고하면 좋을 것 같은 목록
[OS기초] 인터럽트 제대로 이해하기
주변장치와 입출력 장치는 CPU나 메모리와 달리 인터럽트라는 메커니즘을 통해 관리된다. 그래서 인터럽트, 왜 하는거요? 그 이유는 입출력 연산이 CPU 명령 수행속도보다 현저히 느리기 때문이
velog.io
위의 링크는 os 인터럽트에 대한 이해를 돕는 링크인데 학부때나 관련 과가 아니더라도 개발자라면 os에 관한 책은 다 읽었을 것이다
그러나 실상 개발을 하면서 os에 대해서 그렇게 신경을 쓰도록 하지 않기 때문에 잊기 쉬운 내용도 많다
위의 내용은 webflux가 아니더라도 cpu가 io를 할 때 어떻게 동작하는지 모르시는 분이라면 반드시 읽어야 한다고 생각한다.
https://jongmin92.github.io/2019/02/18/Programming/computer-structure/
컴퓨터 구조와 I/O
Computer system일반적인 컴퓨터 시스템은 CPU, 메모리, 외부 장치(ex. 하드디스크, 키보드, 모니터, 마우스)로 구성된다. CPU와 장치 컨트롤러들은 메모리 사이클을 두고 경쟁하며 동시에 실행된다. 경
jongmin92.github.io
위의 내용도 마찬가지이다 내용이 겹치지만 읽는데 오래 걸리지 않으므로 읽어 봐야한다고 생각한다
http://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/
Blocking-NonBlocking-Synchronous-Asynchronous
꽤 자주 접하는 용어다. 특히나 요즘들어 더 자주 접하게 되는데, 얼추 알고는 있고 알고 있는게 틀린 것도 아니지만, 막상 명확하게 구분해서 설명하라면 또 만만치가 않은.. 그래서 찾아보면
homoefficio.github.io
동기 비동기 관련 내용인데 사실 개발자들이 비동기 논블록킹을 모르는 사람은 없을거라고 생각한다 그런데
비동기 블록킹이라면? 동기 논블록킹이라면? 어떻게 동작할지 남에게 설명할 수 있는가? 간단하게라도 말이다
없다면 보셨으면 좋겠다
https://devahea.github.io/2019/04/21/Spring-WebFlux는-어떻게-적은-리소스로-많은-트래픽을-감당할까/
Spring WebFlux는 어떻게 적은 리소스로 많은 트래픽을 감당할까? | Ahea Team Study Blog
Java 와 Stream APIJava8 에서 추가된 기능 중 하나인 Stream 은 왜 나오게 된 것 일까요?Stream을 이용하는 간단한 예제를 보겠습니다. for(int i = 0; i<100; i++>) 2019-04-20 Ahea
devahea.github.io
타이틀에서도 알 수 있듯이 spring webflux는 어떻게 적은 리소스로 많은 요청을 처리할 수 있느냐이다
단순히 쓰레드를 늘려 처리하는 tomcat이랑은 다르고 간단하게나마 이해할 수 있는 내용이므로 추가했다
https://gompangs.tistory.com/entry/Netty-통신-서버-개발-관련-주저리
Netty 통신 서버 개발 관련 주저리
Netty? Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. netty는 JAVA 진영의 Transport Layer에서..
gompangs.tistory.com
webflux가 netty, undertow그 외등등 있지만 기본적으론 netty를 사용하고 undertow도 내부적으로 netty를 사용하기 때문에 읽어봐야 한다고 생각해서 추가했다
https://jongmin92.github.io/2019/02/28/Java/java-with-non-blocking-io/
멀티플렉싱 기반의 다중 접속 서버로 가기까지
소켓이란?소켓은 네트워크 상에서 서버와 클라이언트 두개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 추상화된 장치입니다. 메모리의 유저 공간에 존재하는 프로세
jongmin92.github.io
https://jongmin92.github.io/2019/03/03/Java/java-nio/
Java NIO와 멀티플렉싱 기반의 다중 접속 서버
자바 NIO에 대한 소개와 NIO와 함께 도입된 자바에서 I/O 멀티플렉싱(multiplexing)을 구현한 selector에 대해 알아봅니다. I/O 멀티플렉싱(multiplexing)에 대한 개념에 대해 아직 잘 이해하지 못하고 있다면
jongmin92.github.io
위의 두개는 자바의 nio가 어떻게 구현되어 있지만 조금이나마 이해할 수 있는 내용이다 꼭 읽어봐야 한다고 생각한다
www.youtube.com/watch?v=8fenTR3KOJo&list=PLOLeoJ50I1kkqC4FuEztT__3xKSfR2fpw&ab_channel=TobyLee
엄청 중요한 내용이다 이것을 보는건 필수다
나도 한두번 봐서 잊은 내용이 많지만 다른건 안봐도 이것은 꼭 봐야한다고 생각하고
돈내고 봐야 할 정도로 내용이 좋다고 생각한다
www.youtube.com/watch?v=I0zMm6wIbRI&ab_channel=TOAST
nhn 개발자분이 웹플럭스를 개발하면서 겪은 시행착오인데 나에게도 동움이 된 내용이여서 공유한다
4. 마무리
자 이제 webflux로 개발을 시작해보세요~~
반응형'흔적' 카테고리의 다른 글
2021년 개발자 회고 (2) 2022.01.09 F-LAB 멘토 도전기 (2) 2021.10.08 opensource contribute를 하다 (0) 2021.08.02 무신사에서 보낸 3번째 새해 나는 얼마나 만족하고 있을까 (0) 2021.01.09