본문 바로가기
Feign Client Feign Client Feign Client는 Netflix에서 개발한 http client이다. Feign Client는 http client를 인터페이스를 통해 선언하는 방식으로 코드를 작성하기 때문에 유지보수하기가 좋다. Feign Client를 사용하는 방법은 아래 좋은 글이 많이 있으니 참고하면 된다. (Spring Cloud) Feign Feign REST 기반 서비스 호출을 추상화한 Spring Cloud Netflix 라이브러리 선언적 방식 인터페이스를 통해 클라이언트 측 프로그램 작성 Spring이 런타임에 구현체를 제공 supawer0728.github.io 우아한 feign 적용기 - 우아한형제들 기술 블로그 안녕하세요. 저는 비즈인프라개발팀에서 개발하고 있는 고정섭입니다.이 글에서.. 2020. 10. 8.
자바 - enum Enum 자바 1.5 이전에는 상수를 정의할때 `private final static`을 이용해서 상수값을 관리했다. `enum`이 등장한 이유와 `enum`을 사용하면 어떤장점이 있는지 `enum`을 사용하면 얻는 장점을 정리해보자. 정수 열거 패턴 vs enum 대부분의 개발자들은 아래와 같이 상태를 정의할때 정수를 열거하는 방식을 사용해본 경험이 한번쯤은 있다. 이를 정수 열거 패턴이라고 하는데 정수 열거패턴은 치명적인 단점이 있다. 판매상태를 보내야하는 메서드의 파라미터로 배송상태를 넘겨줘도 아무 문제 없이 동작하게 된다. private final static int SELLING_STOP = 0; private final static int SELLING_START = 1; private fin.. 2020. 9. 1.
Executor 인터페이스 1. Executor 인터페이스와 구현체 ScheduledExecutorService는 ExecutorService를 확장한 인터페이스이다. 따라서 기본적인 내용은 ExecutorService와 유사한데 스케줄링 실행을 처리하는 몇가지 메소드가 추가되었다. 이 인터페이스를 구현한 대표적인 구현체가 ScheduledThreadPoolExecutor 이다. 결국 ScheduledExecutorService를 이해하기위해서는 Executor인터페이스를 이해해야합니다. 2. Executor인터페이스의 역할 자원은 언제나 제한적이다. 트래픽이 없을때는 아무문제 없지만 엄청난 트래픽이 들어오는데 매 요청마다 스레드를 직접 생성한다면 스레드 생성비용, 스레드간의 문맥교환으로 인해서 문제가 생긴다. 이러한 이유로 스레.. 2020. 8. 22.
자바- Optional Optional java8에서 등장한 Optional에대해서 정리해보자. `Optional` 은 null 관련 문제를 해결해주기위해서 등장했다. 아래와 같이 null이 일어날 상황을 가정해서 코드에 녹여야했다. 런타임 과정에서 null인 객체가 로직에 포함되연서 NPE를 발생시킬 가능성이 있기때문에 이렇게 체크를 해야한다. 이런 방어코드 때문에 유지보수가 점점 힘들어지게 된다. public User findUserById(Long id) { User user = userService.find(id); if(user == null) new NotFoundUserException("존재하지 않는 사용자 입니다.!!!"); return user; } 이제 `Optional` 을 이용해서 위의 코드를 개선시켜보.. 2020. 8. 20.
스프링 - 비동기 처리 @async 스프링 비동기 (Asynchronous) 외부 API에 작업 요청하고 외부 API서버에서 요청을 처리하는데 오랜시간이 걸리는 경우 `비동기 방식`으로 처리하면 효율적이다. 스프링에서 비동기처리를 어떻게하는지 알아보자. 1) @EnableAsync 자바에서는 ExecutorService를 통해서 비동기를 처리할 수 있다. 요청마다 Thread를 찍어내는 방법도 있지만 매 요청 마다 쓰레드가 생성되면 쓰레드 관리가 되지 않아서 위험하다. `ExecutorService`를 사용하면 원하는 크기만큼의 쓰레드 풀을 생성하고 풀에서 쓰레드를 꺼내서 사용하고 다시 반납하는 방식으로 처리한다. 애플리케이션에서 비동기 메서드가 많이 필요한 경우 method를 비동기에 맞게 수정해야하는 번거로움이 있다. 스프링에서는 개발.. 2020. 8. 16.
빅데이터 세상으로 떠나는 간결한 안내서 NoSQL Intro 현재 회사에 입사한지 2개월이 지났다. 회사에서 정말 다양한 종류의 NoSQL을 사용하고 있다. (Elastic Search, CouchBase, MongoDB, Casandra, Redis...). 대용량 데이터를 만져본 경험이 없었고 엔터프라이즈 레벨의 애플리케이션을 개발/운영해본 경험이 없었기 때문에 신선한 충격이였다. NoSQL에 대해서 잘 알지 못했는데 (RDBMS를 잘아는것도 아님..) 회사 선배님이 책을 추천해주셨다. 특정 벤더의 DB에 대해서 설명하는 내용이 아니라 왜 NoSQL이 필요한지 RDBMS와 어떤차이를 가지는지 잘 설명해주고 있는 책이였다. NoSQL을 왜 사용해야하는지, 언제사용해야하는지를 이해하고 특정 NoSQL에 대해서 깊게 공부하는게 좋을것 같아서 바로 구매하였.. 2020. 8. 15.