WebFlux란? 비동기 non-blocking 메세지 처리가 가능하며, 반응형 서비스를 만들 때 유용하다. HTTP와 다르게 연결성이기 때문에 한번 연결한 이후에는 따로 요청을 보내지 않아도 서버에서 응답을 보내면 데이터가 들어온다. netty서버에서 실행이 가능하며, SSE 프로토콜을 사용한다. Non-blocking vs Async non-blocking: 작업이 완료되지 않더라도 다른 작업을 처리할 수 있음 ex) 클라이언트가 서버로 메세지 전송 후 응답을 받지 않더라도 다음 작업을 진행할 수 있다. async: 작업이 완료되어야 다음 작업으로 넘어가지만, 작업을 처리하는 동안 다른 적업이 실행될 수 있음 ex) 메세지 전송 후 응답을 받고 다음 작업으로 넘어간다. Flux와 Mono의 차이 Fl..
Eureka Server를 사용하는 이유 마이크로 서비스가 다른 마이크로 서비스를 호출하려면 대상의 IP, Port를 알아야한다. 하지만, random IP, Port일 경우 마이크로 서비스의 정보를 알기가 쉽지 않기 때문에, 각 마이크로 서비스의 IP, Port 정보를 저장하고 검색해주는 Discovery Service(Eureka Service)가 필요하다. Eureka Server 사용법 1. Dependency 추가 (gradle) implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server' 2. @EnableEurekaServer를 이용해서 eurekaServer로 등록한다. @SpringBootAppl..
CICD란? Continuous Integration / Continuos Deployment 의 약자로 지속적인 통합, 지속적인 배포를 뜻한다. 지속적인 통합(CI) CI를 하지않을 경우, 개발자들이 모여서 자신이 짠 코드를 병합하는 시간이 낭비된다. 또한 모여서 코드를 병합하기 전에는 개발자 각각이 다른 코드를 가지고 있는 상태이므로 좋지않다. CI가 이러한 문제를 해결해준다. CI란 빌드/ 테스트의 자동화를 뜻한다. 과정 1. 개발자가 코드 병합 요청 -> 2. CI Tool에서 빌드, 테스트를 진행 -> 3. 문제가 없다면 병합 -> 4. 문제 발생 시 개발자에게 피드백 결론 위 과정은 개발자가 직접 할 수도 있지만, 테스트를 하염없이 기다리는 것은 굉장히 지루하고 비효율적이다. 따라서 푸쉬해놓고..
MSA Micro Service Architecture는 위 그림과 같이 하나의 서버를 여러 개의 마이크로 서버로 쪼개서 운영하는 방식이다. 하나의 서버를 여러 개로 나눠서 관리하는 것에 초기 비용이 들어가기 때문에 큰 규모의 프로젝트에 적합하다. 장점 각각의 서비스가 독립적이기 때문에 빌드 및 테스트, 배포 시간이 단축된다. 장애 발생 시 확산 범위가 작다. 새로운 서비스를 확장하기 좋다. 각각의 서비스가 독립적이기 때문에 서비스마다 다양한 언어와 프레임워크를 적용할 수 있다. 단점 배포해야할 서비스의 수가 많아진다. 서비스 간 통신을 추가로 구현해야하며, 이로 인해 트래픽 양이 증가하게 된다. 모든 서비스를 한 눈에 모니터링하기 어렵다. 즉, 통합 관리가 어렵다. 빌드 테스트 횟수도 서비스 개수 만큼..
쓸데없이 import하는 코드들을 정리해주고, IDE에서 문제가 생긴 것 같을 때 시도해 볼 만하다. ex) 잘되던 코드가 갑자기 안될 때 1. file -> Invalidate Caches 2.clear file system cache and Local History 체크 후 invalidate and restart