
Apache Kafka는 고성능 데이터 파이프 라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼으로 시스템과 시스템을 연결하는 역활을 합니다. Apache Kafka 에 대한 자세한 내용은 Kafka | 개발/설계관련 | develop (gitbook.io) 에 연재 하고 있습니다.카프카 개요 : 개요 | 개발/설계관련 | develop (gitbook.io)프로듀서/컨슈머: 프로듀서/컨슈머 | 개발/설계관련 | develop (gitbook.io)설치: 설치 | 개발/설계관련 | develop (gitbook.io) 프로듀서: Kafka-Producer | 개발/설계관련 | develop (gitbook.io) 컨슈머: 커넥터..

RabbitMQ에 대한 자세한 내용은 RabbitMQ | 개발/설계관련 | develop (gitbook.io) 에 연재 하고 있습니다.RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 구현한 오픈소스 메시지 브로커로 생산자(Producer)가 메시지를 보내면 소비자(Consumer)에게 전달해주는 역할을 하는 메시지 큐로 MPL 1.1에 따라 라이선스가 부여된 오픈 소스 메시지 브로커입니다. Pivotal software Inc(현재 VMware 소유)의 일부로 거의 99.999%의 가동 시간을 제공하는 분산되고 내결함성이 있는 소프트 실시간 시스템을 위해 설계된 Erlang으로 작성되었습니다.설치 및 Default Exchange | 개발/설계관련 | deve..

메세지 시스템에 대한 자세한 내용은 Message Service | 개발/설계관련 | develop (gitbook.io)에 연재 하고 있습니다, 이곳에 들어가면 메세지 시스템. Spring JMS, Kafka, RabbitaMQ에 대한 정보를 추가 하고 있습니다. Message Service메시지 서비스 (Message Service)는 애플리케이션 간 메시지를 교환하기 위한 통신 메커니즘입니다. 이는 분산 시스템에서 데이터를 비동기적으로 전달하고 처리하는 데 사용되며 메시지 서비스는 다음과 같은 몇 가지 주요 특징으로 가지고 있습니다. Message Service비동기 통신: 애플리케이션 간의 느슨한 결합으로 송신자와 수신자 간의 직접적인 연결없이 메세지를 교환할 수 있습니다.신뢰성: 안정적인 데이터..

프로그램에서 복사는 데이터의 복제본을 만드는 것을 의미하는데 많이 실수하는 것이 Shallow Copy와 Deep Copy이다, 특히 객체를 가지고 작업을 하는 경우 특히 주의해야 한다. 다음 코드를 보자 ( 코드는 setter, getter, equals를 작성해야 하지만 lombok 라이브러리를 사용하였다. ) @Getter @Setter @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode class 서비스요소VO implements Cloneable { private String 이벤트코드; private String 요소코드; private String 파라메터; public 서비스요소VO(서비스요..
프로그램 코드에서 데이터를 표현하기 위해서 배열, Map등을 사용한다, 특히 Map은 필드(Key), 값(Value)로 되어 있어필요시 필드(Key) 정의하여 사용하여 유연하게 사용할 수 있지만 를 적용할 수 있지만 프로그램 코드 여러 군데에서 필드를 정의(새롭게 만듬)하여 사용하면 Map으로 선언된 필드의 명확성이 없어서 contains를 사용하여 검사를 하는 로직을 넣어야 하는 단점이 있다.이것은 데이터의 의미가 가변적으로 변하는 것으로 프로그램 코드 작성시 주의를 해야 한다. 특히 파라메터로 전달 해서 필드(Key)를 추가하는 경우는 피해야 하는 것 중에 하나이다. 아니 하지 많아야 하는 것 중에 하나이다. 데이터의 값이 여러 곳에서 변경되면 데이터의 필드는 명시적으로 표현이야 명확하여야 한다. 명..
프로그램에서 함수는 기능을 처리 하기 위한 작은 단위로 하나의 기능만 처리해야 하지만 실제 함수에 여러 기능을 만들어서 라인 수가 많아 진다. 라인이 많으면 프로그램을 수정할 때 많은 잠재적 오류를 낼 수 있으며 복잡도가 높아져서 언젠가는 수정 불가능 할 정도가 된다. 어느 정도가 적당한 라인수 인가? 20라인 10라인 5라인... 라인수 보다는 함수 안에는 하나의 기능 있어야 한다는 것을 기억해야 한다. 하나의 기능으로 된 함수는 getter, setter와 같이 값을 설정하는 것을 제외하고 동사 수준으로 기능 코드는 5줄 미만이 되어야 하고 많아야 10줄 미만의 라인수를 의미한다. 함수의 이름은 함수가 수행하는 기능을 표현할 수 있는 이름으로 작명을 해야 한다. 프로젝트의 도메인에 따른 용어 사전을 ..
프로그램 코드를 작성할 때 일정 조건까지 반복해서 수행하기 위해서 반복문을 사용한다. 반복한다는 것은 시작값이 있고 종료값조건이 있고 얼마나 증감 또는 감소하는 값 즉 스텝이 있다. 모든 언어의 반복문은 비슷한 문법구조를 가지고 있으며 반복문을 사용하게 만드는 컬렉션은 언어마다 다른 타입이 있으며 컬력션 타입에 따라 사용방법이 조금씩 틀리다. 자바에서 set을 하우스키핑기법으로 코드로 작성할 수 있을까? for ( int I = p; i < carSet ; I++) { CarSet carSet = ..... } ... 에 어떤 문장을 완성해야 할까? 한번 생각해 보자. foreach문을 사용해야 한다. 즉 프로그램 언어별로 제공되는 타입에 따라서 적절히 사용해야 한다. 반복문을 다음과 같은 방법을 제공한..
프로그램코드를 작성하다 보면 일반적인 사항과 예외적인 사항이 존재하지만 초보 개발자가 실수하는 부분은 예외보다 일반적인 사항을 먼저 생각하는 경향이 있다. 파일 안에 특정문자나 단어를 찾는 프로그램을 개발한다고 생각해 보자 무엇을 먼저 해야 할까요. 일반적으로 다음과 같이 생각할 것이다. 파일을 오픈한다. 파일을 읽으면서 원하는 단어나 문장을 찾는다. 파일을 닫는다. 더 고려할 것이 없는지 생각해 보자... 파일을 오픈하는데 파일이 없거나 파일은 있지만 파일이 비어 있어서 읽은 것이 없거나 찾을 단어나 문장이 없으면 어떻게 할 건지를 우리는 먼저 생각하고 처리 방법에 대해서 고려해야 한데 조건문은 일반적인 사항만을 생각해서 코드를 작성하면 잠재적 오류가 발생할 수 있는 요소를 가지고 있는 것으로 예외 사..