SW개발
-
5. Producer (1)SW개발/Kafka 2020. 9. 18. 02:22
1. 요약 2. Producer? 메시지를 생산(Produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션 또는 서버 3. 명령어 테스트 메세지 보내기 /usr/local/kafka/bin/kafka-console-producer.sh --broker-list ${kafka broker명+id}:${port} --topic ${메세지를 보낼 topic명} 메세지 확인 /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server ${kafka명+id}:${port} --topic ${topic명} --from-beginning 4. Java로 Producer 사용해보기 import org.apache.kafka.clients.pr..
-
4. kafka 구조SW개발/Kafka 2020. 9. 17. 00:00
1. 카프카 구조의 특징 1.1 분산 시스템 분산 시스템이란 같은 역할을 하는 여러 대의 서버로 이뤄진 서버 그룹을 분산 시스템이라고 하며, 분산 시스템의 장점은 아래와 같습니다. 단일 시스템보다 더 높은 성능을 낼 수 있다 운영중인 서버에 장애가 발생하면 같은 그룹의 다른 서버가 일을 대신 처리할 수 있다. 시스템 확장이 용이하다. 1.2 페이지 캐시 OS는 물리적 메모리에 애플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리 일부를 페이지 캐시로 유지해 OS의 전체적인 성능 향상을 높이게 됩니다. 카프카는 이러한 특징을 이용해 빠른 액세스를 하기 위해 OS의 페이지 캐시를 이용하도록 디자인 되었습니다. 1.3 배치 전송 처리 서버와 클라이언트 사이 또는 서버 내부적으로 데이터를 주고받는 과정에서 ..
-
3. Kafka broker의 주요 설정(properties)SW개발/Kafka 2020. 9. 16. 00:00
Kafka broker의 server.properties 파일에는 kafka broker에 대한 여러가지 옵션을 줄 수 있는데, 주요 옵션은 아래와 같습니다. 옵션 설명 broker.id 브로커를 구분하기 위한 ID delete.topic.enable 토픽 삭제 기능을 on/off(enable = 토픽 삭제 기능) default.replication.factor 리플리케이션 팩터(Replication Factor) 옵션을 주지 않았을 경우의 기본값* min.insync.replicas 최소 리플리케이션 팩터 auto.create.topics.enable 존재하지 않는 토픽으로 퍼블리셔가 메시지를 보냈을 때 자동으로 토픽생성 offsets.topic.num.partitions offsets 토픽의 파티션 ..
-
2. zookeeper(주키퍼)SW개발/Kafka 2020. 9. 15. 00:00
1. Zookeeper? 주키퍼는 분산 애플리케이션을 위한 코디네이션 시스템입니다. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공합니다. 2. Ensemble 주키퍼는 그림과 같이 서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 애플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고받게 됩니다. 상태 정보들은 주키퍼의 지노드(znode)라 불리는 곳에 키-값 형태로 저장하고, 지노드에 키-값이 저장된 것을 이용하여 분산 애플리케이션들은 서로 데이터를 주고 받게 됩니다. 참고로, 앙상블로 구성되어 있는 주키퍼는 과반수 방식에 따라 살아 있는 노드..
-
1. Kafka란?SW개발/Kafka 2020. 9. 14. 21:36
1. Kafka? 카프카란 Apache에서 제공하는 분산형 메세지 큐(Message Queue)입니다. 여기서 메세지 큐란, 메시지 지향 미들웨어(Message Oriented Middleware: MOM, 분산 시스템 간 메시지를 주고 받는 기능을 지원하는 소프트웨어나 하드웨어 인프라)를 구현한 것으로, 간단하게 설명하면 여러 모듈들로부터 나오는 데이터를 특정 모듈들에 전달하기 위해 지나가는 중간통로를 의미합니다. 예를들어, 카프카가 개발되기 전 링크드인의 데이터 처리 시스템은 아래 그림과 같이 복잡하게 이루어져있었습니다. 위의 그림은 엔드투엔드(end to end) 연결방식의 아키텍쳐인데, 이 아키텍쳐는 많은 문제점이 있습니다. 첫째로, 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지..
-
Filter, Interceptor 정리SW개발/Spring 2020. 3. 22. 21:52
이번에 개발중인 제품에서 토큰인증과 권한을 filter에서 모두 처리하면서 Error가 인증관련 문제로 나타나는 문제가 있었다. 그리고 이 부분은 결과적으로 Filter에서는 인증을, Interceptor에서는 권한체크를 담당하도록 구조를 변경하였는데, 이와 관련하여 Filter와 Interceptor가 각각 어떠한 일을 하는지 정리하고자한다. 1. 개요 클라이언트의 요청(servlet request)이 서버의 controller에 도달하기 전에 위의 그림과 같은 단계를 거치게 된다. 그냥 요청하면 컨트롤러에서 바로 처리해주면 될텐데 굳이 저러한 과정을 거치는 이유는 무엇일까? 생각해보면 간단하다. controller에 도착하기 이전에 미리 해주어야 할 것들이 있기 때문이다. 예를들어, 로그인을 할 때,..
-
GraphQL이란 무엇인가?SW개발/GraphQL 2019. 2. 10. 21:25
1. GraphQL? - GraphQL의 정의와 특징 1) GraphQL이 뭐에요? 구글창에 GraphQL이라고 치면 아래와 같은 정의가 나온다. 출처: 위키백과 위에 설명된 내용에서 알 수 있듯이 GraphQL은 1. Query Language 이다.2. REST 구조를 대체할 수 있다.3. 클라이언트는 필요한 데이터의 구조를 지정하여 필요한 데이터만 받아낼 수 있다. 이렇게 요약할 수 있다. 그리고 이것들을 하나로 요약하면, GraphQL의 핵심은 클라이언트가 필요한 리소스(이 용어가 어렵다면 data라고 생각하면 됩니다.)를 url 경로가 아니라 Query를 통해 표현한다는 것! 이걸 좀 더 간단하게 말하면, 클라이언트에게 필요한 데이터만 쿼리를 통해 가져올 수 있다는 것! GraphQL은 SQL처..