흔히 대용량 트래픽이 몰리는 서비스의 회사 스택을 보면 webFlux란걸 볼 수 있습니다. 그리고 실제 여러 글들에서 볼 수 있는 퍼포먼스 비교 분석 그래프를 보면 그 차이는 눈에띄게 차이가 납니다. 그렇다면 webFlux란 뭘까요? webFlux는 reactive programming을 지원하는 프레임워크로 비동기를 사용해 대용량 처리를 적은 자원으로 매우 빠르게 동시 처리하는 성능을 보여줍니다. 그렇다면 무조건 좋은 걸까요? 답을 말씀드리자면 그렇진 않습니다. 그렇다면 비동기가 좋은 경우는 어떤 경우일까? 먼저 어떤 경우에 좋은지 알기 위핸 사전 개념인 비동기와 동기 블로킹 논블로킹에 대해 알고 있을 필요가 있습니다. https://golf-dev.tistory.com/24 자바는 Synchroni..
개인 프로젝트 도중 사용하게 되서 써본 글입니다. 앞으로 계속 공부를 이어나갈 예정입니다. 부족하지만 잘 부탁드립니다! 코루틴 소개 코루틴은 흔히 백엔드 개발자 사이에서 코틀린에서 제공하는 기능으로 착각하고 있는 분들이 많습니다. 하지만 Javascript, C#, Go 등 이미 여러 언어에서 지원하고 있는 개념이며 새로운 개념, 기술이 아닙니다. 코루틴 소개 전 CallBack 지옥에 대해서 알아보자 콜백 지옥은 함수형 패러다임을 적용한 언어에서 등장하는 형태입니다. 함수에서 최종적인 결과를 도출하기 위해 콜백 함수를 과도하게 호출하면 콜백 지옥이 생기게 되고 이러한 코드는 가독성을 떨어트리고 디버깅을 어렵게 만듭니다. 예를 들어 단순 주문을 하는 로직을 구현한다고 가정해 봅시다. memberRepos..
배경 회사에서 7만개 혹은 11만개의 데이터를 외부에서 받아와 대량으로 전송해야하는 배치 프로그램을 개발 중이었습니다. 처음엔 FeignClient를 사용하여 개발 하였습니다. 하지만 단일 스레드로는 성능이 너무 나오지 않아 11번 호출해서 데이터를 받아오는데에도 오랜시간이 소요되었습니다. 만약 7만개 이상의 데이터를 가져오려면 너무 오랜 시간 동안 배치가 실행되어야 했고, 그러면 다른 배치들과 겹쳐서 돌아가기 때문에 서버에 큰 부담이 생기거나 제가 올린 배치 때문에 병목 현상이 생기는것도 고려해야했습니다. 🤔 멀티 스레드를 사용한다면? 처음에 이 문제를 해결 하기 위해서 저는 멀티 스레드를 사용했습니다. Executor를 Bean으로 등록하고 서비스에서 주입 받아 사용했습니다. @Service @Req..
- Total
- Today
- Yesterday
- 게시판
- 취업
- 코딩
- 코드
- 인터뷰
- DB
- 프로젝트
- IT
- swarm
- thread
- 면접
- Redis
- 개발자
- 동시성
- 면접 준비
- 개발
- docker
- CS
- 프로그래밍
- JPA
- 취업준비
- 자바
- java
- MySQL
- 면접준비
- Kotlin
- Spring
- DevOps
- 취준
- 백엔드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |