본문 바로가기

Web

(44)
Kafka Streams (카프카 스트림즈)에 대해서 https://www.youtube.com/watch?v=vKxhPUUEDmM 이 글은 위의 링크 많이 참조하여 작성하였습니다. 한번 보시면 좋을것 같아요 ㅎㅎ Kafka Streams는 뭘까? 카프카에 대한 정의는 분산 이벤트 스트리밍 플랫폼으로써 프로듀서와 컨슈머를 통해 데이터를 생산하고 받아와서 처리하는곳에 사용해왔습니다. 이 기술은 강력한 성능을 가지고 있고 단순히 메시지를 전달하는 것이 아닌 연속적으로 대용량의 메세지를 처리하는 곳에도 사용해왔었습니다. 이제는 컨슈머로 받아와서 처리하는 것보다 더 빠르고 안전하게 실시간으로 처리할 수 있게 카프카에서 지원해준 것이 Kafka Streams입니다. 간단하게는 어떤 Topic으로 들어오는 데이터를 Consume하여 Kafka Streams에서 제공하..
Redis에 대해서 Redis는 무엇일까? 정의는 메모리 기반의 Key-Value 구조의 데이터 관리 시스템 Memcache와 차이점 그리고 종종 MemCache와 종종 비교됩니다. 그럼 MemCache를 잠시 살펴봅시다. MemCache의 특징들은 아래와 같습니다. 처리속도가 빠르다 => 디스크를 거치지 않기 때문에 빠르다 휘발성을 가진다 => 프로세스가 죽거나 장비가 꺼지면 데이터가 사라진다 메모리를 재사용한다 => 메모리가 부족하면 LRU 알고리즘에 의해 데이터가 사라진다 그리고 MemCache와 비교되는 Redis도 위와 같은 특성을 그대로 가지게 됩니다. 하지만 조금씩 다릅니다. Redis와 MemCache의 차이점 데이터를 메모리 + 디스크 혹은 다른 서버 메모리에 저장한다. 따라서 프로세스가 죽어도 데이터가 저..
Design Pattern 디자인 패턴에 대해서 0. 디자인 패턴이란 소프트웨어 설계 문제에 대한 해답을 문서화하기 위해 고안된 형식 위키에서는 위와 같이 표현되어 있습니다. 조금 어렵게 들리기도 하네요. 제가 이해한 바로는 좋은 코드를 만드는 방법들이라고 이해하게 되었습니다. 좋은 코드는 각자의 스타일에 따라 다르겠지만 통상적으로는 아래의 특징들을 가진 코드를 좋은 코드라고 합니다. 좋은 코드 가독성이 좋음 간결함 확장과 수정에 용이 유지 보수가 편함 결합도가 낮음 응집도는 높음 ... 디자인 패턴은 좋은 코드를 만드는 방법이라고 했으니까 위의 특징들을 만족시키는 코드 설계 방식이겠습니다. 그리고 디자인 패턴보다 객체지향의 5대 원칙을 먼저 보는 것이 다음의 이해를 위해 좋습니다. 1. 디자인 패턴 종류 생성 패턴 (Creational Pattern..
[Spring] 스프링 DI(Dependency Injection)은 어떻게 이루어지나 IoC (Inversion of Control) DI를 알아보기 전에 알아야 할 용어가 IoC입니다. IoC는 "제어의 역전"이라는 말로 메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미합니다. 여기서 외부는 Spring Framework입니다. 기존에는 객체를 클래스 내부에서 생성하고 사용했지만 IoC를 적용하면 미리 생성해놓은 객체를 주입받아 사용하기만 하면 됩니다. 이를 통해 얻을 수 있는 장점은 아래와 같습니다. 제어의 역전의 장점 객체 간 결합도를 낮춘다 유연한 코드 작성 가능 가독성 증진 코드 중복 방지 유지 보수 용이 DI (Dependency Injection) 위에서 알아본 IoC에서 객체를 주입받아 사용한다고 했습니다. 바로 이것이 DI이죠. 즉, ..
SPA에 대해서 (Single Page Application) 단일 페이지 애플리케이션(Single Page Application)은 웹, 앱에서 점점 많은 정보를 제공하는 추세에 따라 발전된 모던 웹의 패러다임입니다. 정보가 많아질수록 웹을 로딩하는데 비용이 많이 들어가게 되고 사용자 경험이 점점 안좋아지게 됩니다. 따라서 해결책이 필요해지게 된거죠. 기존에는 Link Tag 방식을 사용했습니다. 우리가 아는 링크를 클릭하게 되면 다른 페이지로 이동하게 됩니다. 그리고 그 링크에 대한 URL은 각각 다르게 설정되어 있죠. 이 방식은 각 URL에 해당되는 화면에 대한 리소스를 전부 구성하여 내려주게 됩니다. 이것이 서버 렌더링 방식이죠. 서버에서 렌더링하여 클라이언트에게 보내주게 됩니다. 서버 렌더링 방식은 새로운 페이지 요청마다 정적 리소스를 다운로드하게 되고 전..
도메인 주도 설계 (Domain Driven Development)에 대해서 DDD에 대해서 알아가면 알아갈수록 개념을 하나로 잡기가 어렵다는 걸 느끼게 됐습니다. 여러 블로그에서 DDD에 대한 정보를 검색해봐도 정확한 적용방식이나 개념이 이해가 가지 않아서 정리하게 된 글입니다. 저와 같은 분들에게 도움이 되면 좋겠습니다. DDD란 뭘까? DDD란 말 그대로만 보자면 도메인 패턴을 중심에 놓고 프로그램을 설계해가는 방식을 의미합니다. 이러한 설계 방식을 올바르게 적용한다면 도메인 모델이라고 하는 소프트웨어 추상화를 달성할 수 있게 되고 이것이 목표인 설계 방식이라고 보여집니다. 그럼 도메인은 뭘까요? Domain (도메인) 도메인 - 영어 단어로써의 의미는 영토, 영역, 범위를 의미합니다. 프로그래밍 부분에서 의미는 소프트웨어 프로그램이 제공하는 기능 중 하나(영역)입니다. 도..
[kafka] Elastic Stack과 Kafka 실습해보자! - (3)(elk 설치) marrrang.tistory.com/40?category=927204 [kafka] Elastic Stack과 Kafka 실습해보자! - (1)(설치 및 구성) 카프카만 하기엔 아쉬운데? ES도 한번 도전해보자 카프카만 하기엔 시간이 아깝기에 ES도 함께 적용시켜보는 아주아주 간단한 실습을 진행해보려합니다. 우선은 카프카부터 시작해봅시다. 모든 marrrang.tistory.com marrrang.tistory.com/42 [kafka] Elastic Stack과 Kafka 실습해보자! - (2)(produce and consume) https://marrrang.tistory.com/40?category=927204 [kafka] Elastic Stack과 Kafka 실습해보자! - (1)(설치 및 ..
Java에서 외부 프로세스 실행하기 Apache Commons Exec 이용 1) dependency 추가 org.apache.commons commons-exec 1.3 2) 실행 예시 public void execute(String[] command) throws IOException,InterruptedException { DefaultExecutor executor = new DefaultExecutor(); CommandLine cmdLine = CommandLine.parse(command[0]); for (int i=1, n=command.length ; i
[kafka] Elastic Stack과 Kafka 실습해보자! - (2)(produce and consume) https://marrrang.tistory.com/40?category=927204 [kafka] Elastic Stack과 Kafka 실습해보자! - (1)(설치 및 구성) 카프카만 하기엔 아쉬운데? ES도 한번 도전해보자 카프카만 하기엔 시간이 아깝기에 ES도 함께 적용시켜보는 아주아주 간단한 실습을 진행해보려합니다. 우선은 카프카부터 시작해봅시다. 모든 marrrang.tistory.com 데이터 소통이 있어야 ES도 쓸곳이 생기겠지 앞서서 카프카를 설치했으니 사용을 해보겠습니다. 이번 실습에서는 Spring Boot 프로젝트를 생성하고 간단하게 Kafka로 메세지를 전송해보겠습니다. 1. SpringBoot 프로젝트로 시작 스프링 부트 프로젝트를 생성하고 시작하겠습니다. 이 실습에서 boot 프..
[kafka] 카프카 관련 라이브러리 or API 카프카를 하고 싶은데 너무 귀찮잖아..! 편하게 쓰고 싶다! 실사용에 앞서서 자주 사용하는 라이브러리나 API를 알아봐야겠다고 생각했습니다. 1. Kafka Client Kafka 구조에서 서버와 Application 사이에서 API로서 사용할 수 있는 Kafka Client입니다. Java 외 3rd party library를 제공합니다. (Python, C++ 등) broker 버전과 client 버전의 호환성 확인 필요 Kafka broker 버젼 Java client 호환성 Kafka stream 호환성 Kafka Connect 호환성 0.10.0 0.10.1을 제외 모든 버전 가능 0.10.0 버젼만 가능 0.10.1을 제외 모든 버전 가능 0.10.1 모든 버전 가능 모든 버전 가능 0.10...