본문 바로가기

java13

[우아한테크세미나] 190620 우아한객체지향 by 우아한형제들 개발실장 조영호님 발표를 보고 난 후기 https://www.youtube.com/watch?v=dJ5C4qRqAgA&t=1589s  개발자의 숙명은 무엇일까?적은 비용을 드려 요구사항을 지속적으로 반영하는 것 아닐까?그러기 위해 무엇이 필요할까?당장 빠르게 개발할 수 있는 능력과 이를 지속적으로 유지할 수 있도록 시스템을 관리할 수 있는 능력이 필요할 것 같다.일반적으로 당장 빠르게 개발하는 것은 상대적으로 쉽지만 이를 지속적으로 하는 것은 어렵다. 시스템은 기능이 추가될수록 더욱 복잡해지고 시간이 지날수록 기술은 노후화되기 때문이다.그렇다면 개발자가 주력으로 집중해야할 부분은 당장 빠르게 개발하는 것보단 이러한 상태를 지속적으로 유지할 수 있도록 시스템을 관리하는 것이다. 그렇다면 지속적으로 유지보수하기 좋은 시스템을 만드려면 어떻게 해야.. 2024. 5. 26.
API 호출 관점에서 WebClient 와 Coroutine 조합해보기 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다.기존 WebClient 다시 보기이전 글에서 webclient를 활용해 api 통신을 했던 코드를 다시 한번 살펴보자. @GetMapping("/test/webclient/non-blocking/{sleep}") fun `webclient 기반 코드(non-blocking)`( @PathVariable("sleep") sleep: Long, ): ResponseEntity> { println("호출전: ${LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))}") val r.. 2024. 1. 30.
스레드 block 관점에서 Webflux Map vs Flatmap 비교 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다 서론 흔히들 webflux는 thread pool 기반의 모델과 달리 event loop 기반 모델을 사용하여 높은 처리량을 얻을 수 있다고 말한다. 위 말은 event loop 가 thread pool 기반의 모델보다 스레드를 더 효율적으로 사용한다는 것을 내포하고 있다. 즉 thread pool 기반의 모델은 io waiting 이 발생하면 thread 가 block 되는 반면, event loop 기반의 모델은 io waiting 이 발생하면 thread 가 block 되지 않고 다시 스레드풀에 반환되어 다른 처리를 할 수 있는 상태가 된다. 하지만 단순히 webflux 를 사용한다고 해서 무조건 threa.. 2023. 10. 2.
API 호출 관점에서 TaskExecutor & Coroutine & Webclient 비교해보기 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. 기술에 대한 필요성 spring mvc 환경에선 하나의 요청당 하나의 스레드가 할당되어 요청을 처리하게 된다. 이는 기본적으로 모든 요청을 동기적(순차적)으로 처리한다는 의미이다. 모든 요청을 동기적으로 처리하는 방식은 인간이 가장 이해하기 쉬운 방식이기 때문에, 이 방식으로 시스템을 구성하고 코드를 작성하는 것은 코드에 대한 가독성과 유지보수성을 좋게 유지할 수 있는 선택지가 된다. 따라서 대부분의 상황에서 이 방식은 좋은 선택지가 된다.(심플이즈베스트..) 하지만 특정 상황에서 트레이드오프를 해야 할 수도 있다. 예를 들어 하나의 요청에서 처리해야 하는 작업이 외부 api를 10번 호출해야 하는 일이고, 각.. 2023. 9. 8.