개발 공부(36)
-
99클럽 20일차 TIL: SOLID
#1. 오늘의 학습 키워드 개발원칙 SOLID 에 대해서 자바 스프링 부트로 개발을 하기 시작하면서, 여러 기술을 접하면서, 객체 지향 프로그래밍은 이런 것이구나, 를 간접적으로 느꼈다. 그러면 객체지향 프로그래밍의 5가지 설계원칙, SOLID 에 대해서도 알아보자 #2. 공부한 내용 SOLID 객체지향 프로그래밍을 하면서 지켜야하는 5대 원칙 5개의 원칙은 아래와 같다 SRP (단일 책임 원칙) OCP (개방 - 폐쇄 원칙) LSP (리스코프 원칙) ISP (인터페이스 원칙) DIP (의존 역전 원칙) 1. SRP (Single Responsibility Principle) 단일 책임 원칙 단일의 모듈은 단일의 책임을 갖는다는 원칙 특정 모듈을 수정할 때, 해당 모듈을 수정하는 이유는 하나여야된다는 의..
2024.04.23 -
99클럽 19일차 TIL: WebSocket
#1. 오늘의 학습 키워드 자바 Spring 에서의 WebSocket 에 대해서 저번 post 에서 HTTP 2 방식으로 통신을 하여 양방향 통신을 지원하는 gRPC 에 대해서 알아보았다. 또한 채팅 등 실시간 서비스에 적합한 Spring Webflux 에 대해서 알아보았다. 이 두 가지의 특징을 살펴보면, 익숙한 또 다른 기술이 떠오른다 WebSocket #2. 공부한 내용 WebSocket 웹 소켓 웹 소캣은 서버와 클라이언트 사이의 인터액티브 통신 세션을 설정하여 언제든 양방향 통신 및 데이터 전송을 가능하케 하는 기술이다 보통 채팅, 증권 거래, sns 등 서비스에서 많이 쓰이고 있다. 채팅 서비스를 구현 할 때 기존 rest API 방식을 사용하게 되면, 클라이언트에서 매번 서버로 HTTP 통신..
2024.04.22 -
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