til(36)
-
99클럽 18일차 TIL: gRPC
#1. 오늘의 학습 키워드 자바 Spring Boot에서의 gRPC 에 대해서 MSA 구조에서 service 간 통신에서 REST API 를 쓸 수도 있지만 gRPC 를 쓸 수도 있다. Spring Boot 에서 이미 gRPC 를 지원해주는 라이브러리가 존재하기 때문. 일반적으로 REST API 는 단일 request 단일 response 이기 때문에, 여러 response 반환을 원할 경우, 그만큼의 request 를 보내야 해서 네트워크 통신 비용이 많이 소모된다. 그래서 gRPC 가 성능적인 관점에서 REST API 를 사용하다 좋은 대체제로 대두된다. #2. 공부한 내용 gRPC google, Remote Procedure Calls 구글에서 개발한 원격 프로세저 호출을 위한 시스템. REST 처..
2024.04.21 -
99클럽 17일차 TIL: Spring Webflux: Mono, Flux
#1. 오늘의 학습 키워드 Reactive Streams의 4가지 Interface 및 Spring Webflux 의 반응형 타입 Mono 와 Flux 에 대해서 저번 post 에서 Spring WebFlux 의 개념적인 부분을 다뤘다. 다시 정리를 해보면, Spring Webflux 는 Non-Blocking, 비동기적 i/o 방식을 지원하여 높은 확장성과 성능을 자랑하는 반응형 웹 프레임워크이다. 반응형 프로그래밍, Reactive Streams 과 Reactor에 대한 개념도 다뤘었는데, 그 중 Reactive Streams의 interface 4가지와, 또 그 중 Publisher 에 해당하는 Mono와 Flux에 대해서, 좀 더 디테일하게 알아보자. #2. 공부한 내용 Reactive Strea..
2024.04.20 -
99클럽 16일차 TIL: Spring Webflux
#1. 오늘의 학습 키워드 Spring Webflux 에 대해서 기존에 많이 사용했던 Spring MVC 패턴은 blocking I/O 방식이다. 요청을 하고 응답이 올 때까지 대기. 그런데 몇몇 요건에 따르면 요청을 보내고 다른 일을 할 수 있도록 대기하지 않길 원한다. 예를 들면 시스템 알람과 같은 것. 실시간 어플리케이션 그러면 Non-blocking I/O 방식을 지원해주는 프레임워크는 무엇일까 #2. 공부한 내용 Spring Webflux 반응형 및 비동기적 웹 앱 개발을 지원하는 모듈 비동기 Non-Blocking I/O 방식을 제공 Reactive Streams 의 구현체 중 하나인 Reactor 에 의존하여 비동기 로직을 구성. 비동기적인 이벤트 지향 프로그래밍을 통해 얻을 수 있는 이점 ..
2024.04.19 -
99클럽 15일차 TIL: N+1문제
#1. 오늘의 학습 키워드 자바 스프링에서의 N+1 문제 에 대해서 JPA를 적용하는 과정에서, DB에 관련된 이모저모를 알아보는 과정에서 또 하나 재밌는 개념을 발견했다. 트랜잭션, MVC 패턴 등은 이미 백엔드 코드 구현 중에 체득되어있는 지식들이지만, 해당 문제에 대한 대비는 아직 백엔드 코드에서 이뤄지지 않은 것 같다. 혹은 눈치를 채지 못했거나. 또한 분명 대학교 수업 시간에 배웠던 기억이 있지만, 가물가물하기에 다시 한 번 상기시켜보도록 하자. #2. 공부한 내용 N+1 문제 연관 관계에서 발생하는 이슈 연관 관계가 설정된 Entity를 조회할 시, 조회된 데이터 개수 (N) 만큼 연관 관계가 있는 데이터를 추가로 조회하는 쿼리를 발생시키는 문제 쉽게 말하면 1번 쿼리로 조회하고자 하는데 N ..
2024.04.18 -
99클럽 14일차 TIL: Transaction
#1. 오늘의 학습 키워드 자바 스프링에서의 Transaction 에 대해서 JPA, myBatis 동시 사용을 위한 multitransaction 을 구현하기 전 Transaction 자체에 대해서 알아보고 넘어가자. DB 수업 시간에 아주 중요한 파트를 차지했던 Transaction. 이렇게 수업시간에 배웠던 내용들을 실제 코드에서 구현하는 것은 재밌는 일이다. 트랜잭션의 구현은 복잡할 줄 알았는데, Spring에서는 굉장히 쉬운 방법을 제공하고 있었다. #2. 공부한 내용 Transaction 트랜잭션 더 이상 쪼갤 수 없는 업무 처리의 최소 단위. 예) A → B 에게 송금할 때: A는 돈을 지불하고 B는 돈을 받는 것. 이 작업들은 하나의 트랜잭션으로 쪼갤 수 없다. 트랜잭션의 특징: ACID ..
2024.04.17 -
99클럽 13일차 TIL: Hikari CP
#1. 오늘의 학습 키워드 자바 스프링에서 Hikari 에 대해서 현재 회사에서 기존에 사용하던 MyBatis에 추가로 JPA를 도입하려한다. 두 기술을 동시에 사용하려다보니 고려사항이 많아진다. 그 중 현재 본인이 대응해야하는 것은 멀티 트랜잭션 관련 문제다. 기존 MyBatis로 설정된 transaction Manager 와 JPA로 설정된 transaction Manager 가 다르기에 묶어줘야하거나, 단일 트랜잭션을 묶어서 사용해야한다. 해당 문제를 해결하기 전에 CP와 히카리(Hikari)에 대해 짚고 가기 위해 글을 쓴다. (해결과정은 추후 블로그 글을 올리겠다) #2. 공부한 내용 JDBC Java Database Connectivity 자바에서 DB에 쿼리를 던지거나, 수정 할 수 있도록 ..
2024.04.16