분류 전체보기(363)
-
Spring - Springboot GenericController(제네릭컨트롤러), 컨트롤러 추상화
Spring - Springboot GenericController(제네릭컨트롤러), 컨트롤러 추상화 Web applcation을 개발하면 공통적으로 개발하는 Flow가 있다. Controller->Service->Repository는 거의 왠만한 웹어플리케이션의 개발 플로우일 것이다. 하지만 이런 플로우 안에서도 거의 모든 비즈니스마다 공통적인 로직이있다. 바로 CRUD이다. 모든 도메인에는 생성,수정,삭제,조회 로직이 들어간다. 이러한 로직이 모든 컨트롤러,서비스 클래스에 도메인마다 작성이 된다면 이것도 중복코드인 것이다. 오늘 포스팅할 주제는 바로 이러한 로직을 추상화한 Generic Controller이다. 사실 아직 많이 부족한 탓에 더 좋은 방법도 있겠지만 나름 혼자 고심하여 개발한 것이기 때..
2019.03.22 -
ELK - Filebeat 란? (실시간 로그 수집)
ELK - Filebeat 란? https://coding-start.tistory.com/187조금 더 다듬어서 Filebeat 정리하였습니다. 만약 많은 애플리케이션이 분산되어 있고, 각 애플리케이션이 로그 파일들을 생성한다고 생각해보자. 만약 해당 로그 파일을 하나의 서버에 일일이 ssh 터미널을 이용하여 로그 파일을 수집하는 것이 합리적인 행동일까? 만약 엄청난 규모의 서비스이고 분산되어 있는 서비스의 애플리케이션이 수백개라고 생각하면 ssh를 이용하는 방법은 생각하기도 싫은 방법일 것이다. 이런 상황에서 Filebeat는 로그와 혹은 파일을 경량화된 방식으로 전달하고 중앙 집중화하여 작업을 보다 간편하게 만들어 주는 역할을 한다. 다시한번 Elastic 공식 홈페이지에서 소개하는 Filebeat..
2019.03.20 -
Kafka - Kafka Producer(카프카 프로듀서) In Java&CLI
Kafka - Kafka Producer(카프카 프로듀서) In Java&CLI 카프카 프로듀서란 메시지를 생산(produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션, 서버 등을 모두 프로듀서라고 부른다.프로듀서의 주요 기능은 각각의 메시지를 토픽 파티션에 매핑하고 파티션의 리더에 요청을 보내는 것이다. 키 값을 정해 해당 키를 가진 모든 메시지를 동일한파티션으로 전송할 수 있다. 만약 키 값을 입력하지 않으면, 파티션은 라운드 로빈(round-robin) 방식으로 파티션에 균등하게 분배된다. 이후의 모든 예제는 이전 포스팅에서 구성한 카프카 클러스터링 환경에서 진행하였습니다. 동일한 환경 구성을 구축하고 예제를 진행하시려면 이전 포스팅을 참조하시길 부탁드립니다. ▶︎▶︎▶︎카프..
2019.03.16 -
Kafka - Kafka(카프카) cluster(클러스터) 구성 및 간단한 CLI사용법
Kafka - Kafka(카프카) cluster(클러스터) 구성 및 간단한 CLI사용법 ▶︎▶︎▶︎카프카란? 이전 포스팅에서는 메시징 시스템은 무엇이고, 카프카는 무엇이며 그리고 카프카의 특징과 다른 메시지 서버와의 차이점에 대한포스티이었습니다. 이번 포스팅은 간단하게 카프카3대를 클러스터링 구성을 하여 서버를 띄우고 CLI를 이용하여 간단히카프카를 사용해보려고 합니다. 카프카는 중앙에서 많은 서비스 시스템의 데이터를 받아서 다른 시스템으로 받아주는 역할을 하는메시지 시스템으로 MSA에서는 없어선 안되는 존재가 되었습니다. 그렇다면 이렇게 중요한 카프카를 한대만 띄워서 프로덕트 환경에서운영한다는 것은 과연 안전한 생각일까요? 아닙니다. 여러대를 클러스터링 구성하여 고가용성을 높혀야 운영환경에서도 안전하고..
2019.03.13 -
Kafka - Kafka(카프카)의 동작 방식과 원리
Kafka - Kafka(카프카)의 동작 방식과 원리 Kafka는 기본적으로 메시징 서버로 동작합니다. 여기서 메시징 시스템에 대해 간단히 살펴보자면 메시지라고 불리는 데이터 단위를 보내는 측(publisher,producer)에서 카프카에 토픽이라는 각각의 메시지 저장소에 데이터를 저장하면, 가져가는 측(subscriber, consumer)이 원하는 토픽에서 데이터를 가져가게 되어 있습니다. 즉, 메시지 시스템은 중앙에 메시징 시스템 서버를 두고 이렇게 메시지를 보내고(publish) 받는(subscriber) 형태의 통신 형태인 pub/sub 모델의 통신구조입니다. 여기서 미담이지만, 카프카의 창시자인 제이 크렙스는 대학 시절 문학 수업을 들으며 소설가 프란츠 카프카에 심취했습니다. 자신의 팀이 새..
2019.03.12 -
Java - lambda(람다) 간단한 사용법 !
Java - lambda(람다) 간단한 사용법 !람다란 무엇일까? 람다(lambda)란 간단하게 표현하면 메서드에 전달 가능한 함수형 인터페이스의 구현체이다. 그럼 여기서 함수형 인터페이스란 무엇인가? 함수형 인터페이스는 하나의 메소드만 선언되어 있는 인터페이스를 함수형 인터페이스라고 부른다. 이것의 예제 소스코드를 보면, 1234@FunctionalInterfacepublic interface Callable { V call() throws Exception;}cs이것은 java.util.concurrent의 Callable 인터페이스이다. 이러한 인터페이스를 함수형 인터페이스라고 부른다. (@FunctionalInterface 어노테이션을 붙이면 이 인터페이스가 함수형 인터페이스 조건에 어긋나면 예외..
2019.03.10