SW개발
-
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처..