Home
김도현
Cancel

API Gateway와 조금 더 친해져보기

Spring Cloud Gateway Reference API Gateway가 왜 필요한가? MSA환경은 각 도메인 서비스에 여러 대의 인스턴스를 할당하여 스케일 아웃을 통해 확장성/가용성의 이점을 얻을 수 있다. 그렇다면 클라이언트는 UserService라는 도메인 서비스가 스케일 아웃이 된다면 확장된 서비스의 IP주소, 포트번호 등...

gRPC와 조금 더 친해져보기

참고자료 참고자료 참고자료 gRPC 등장 배경 구글에서 개발한 프레임워크이다. PB(Protocol Buffer, 프로토콜 버퍼)기반 Serizlaizer에 HTTP/2를 결합한 RPC 프레임워크이다. IPC (Inter Process Communication 프로세스 간 통신) 운영...

Easel(트위터 클론 프로젝트)의 기술 회고

새롭게 접한 기술 스택 gRPC 동작원리 gRPC는 왜 빠르게 동작하는가? gRPC Gateway가 필요한 상황 Kafka 카프카의 구성요소 및 구조 컨슈머의 내부 동작 원리 프로듀서의 내부 동작 원리 이벤트 전송 간 오류가 발생했을 때 어떻게 ...

Generic 과 조금 더 친해지기

제네릭이란? 상속관계에 대한 타입 안정성을 지키고 유연하게 타입을 확장할 수 있도록 도와주는 기능이다. public class MyCustomList<T> { public void addElement(T element) { list.add(element); } } 위와 같이 제네릭 타입을 매개변수로 받...

Gradle 의존성 땡기는 방법 2가지 비교 (api, implementation)

Gradle이 대세인 요즘 라이브러리 의존성을 땡겨받는 방법 중 크게 두 가지가 있다. api(의존성 어쩌구 저쩌구) implementation(의존성 어쩌구 저쩌구) 두 방식의 차이점은 의존성 연쇄에 대한 것에 있다. api 구문 api 구문은 의존성이 연쇄되어 의존성이 끊어지지 않고 이어진다는 것이다. 예를 들자면 아래와 같다. ...

Docker, Docker Compose로 Kafka 사용하기

참고 자료 참고 자료 1. Docker Compose 설치하기 $ sudo hdiutil attach Docker.dmg $ sudo /Volumes/Docker/Docker.app/Contents/MacOS/install $ sudo hdiutil detach /Volumes/Docker 위 명령어를 바탕으로 Docker Compose를...

유연한 시스템을 위해 알아야할 내용들

참고 자료 참고 자료 유연한 시스템이 왜 필요한 것인가? 사용자가 많아지게 되면 서비스를 제공할 수 있는 가용 서버를 늘려 트래픽에 대응할 수 있어야한다. 하지만 어떤 조직이던간에 우리가 사용할 수 있는 자원은 필연적으로 한정되어있다. 따라서 자원을 효율적으로 사용하여 가용할 수 있는 서버를 늘리는 것이 우아하게 사용자의 요구를 처리할 수 ...

테스트 대역과 테스트 피라미드

참고 자료 마틴 파울러 - 테스트 대역 JesusValera 테스트 대역이 왜 필요한가? 테스트하고자 하는 대상이 있을 때 이 로직이 다른 객체와 의존관계가 있을 때 의존관계의 로직 결함으로 인해 테스트가 실패할 수 있다. 따라서 실제 동작하는 것처럼 보이는 별개의 객체를 만드는 방식을 적용하는데 이 객체를 테스트 더블 이라고 한다. ...

스프링을 잘 쓴다는 것은 애노테이션을 많이 아는 것

의존성 주입 관련 애노테이션 @Autowired @Qualifier @Inject (deprecated) @Named (deprecated) @Primary @Value @Import @DependsOn @ConstructorProperties @Lookup @AliasFor ...

MongoDB와 Spring Boot 함께 사용하기

연동 과정 DBMS 셋팅 MongoDB에 접속해서 DB와 Collection을 생성해준다. 여기서 Collection은 RDBMS의 Table과 같은 개념이다. Spring Boot 셋팅 Gradle 의존성 추가 아래 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-sta...