본문 바로가기

전체 글92

[Kafka] Kafka란? 1. Kafka : 아파치 카프카(Apache Kafka)는 LinkedIn에서 개발되었으며, Java 및 Scala 기반의 고용량 실시간 데이터 스트림에 특화된 분산 스트리밍 플랫폼이다. 카프카는 이벤트 브로커라고도 하며, Topic이라는 이벤트 스트리머를 통한 메시지 처리를 한다. 발생한 이벤트에 따라서 토픽에 메시지를 발행하고, 토픽을 구독하고 있는 소비자가 메시지를 소비함으로써 이벤트를 처리하여 해당 오프셋을 표시하고 파티션을 통한 분산저장을 통하여 안정성을 보장한다. 2. Kafka의 구성 요소 : Kafka의 구성은 크게 아래의 4가지로 볼 수 있다. 1. Zookeeper : 카프카 클러스터를 관리하고, 메타 데이터를 관리하는 역할을 수행한다. 2. Kafka Broker : 카프카 브로커로.. 2023. 4. 28.
[CS] 객체 지향 프로그래밍 (Object-Oriented Programming) / SOLID 프로그래밍을 시작하면서, 객체 지향과 절차 지향과 같은 용어에 대하여 많이 접해봤을 것이다. 프로그래밍을 하는 관점에서 어떠한 기준을 두고 프로그래밍을 할 지에 관한 것이기에 다소 낯선 개념으로 느껴질 수도 있을 것이다. 그중 객체 지향 프로그래밍(OOP)과 그 원칙인 SOLID에 관하여 다루어 볼 것이다. 1. 객체 지향 프로그래밍(Object-Oriented Programming) 객체 지향 프로그래밍은 말 그대로 프로그래밍에서 모든 관점을 객체 중심으로 설계하여 프로그래밍하는 것을 의미하며, 이는 사람이 사물을 하나의 객체로 이해하는 것처럼, 이를 프로그래밍에 도입한 개념이다. 객체 지향 프로그래밍에서 큰 개념은 3가지로 나뉘어서 구분할 수 있다. 객체 자체를 의미하는 Object, 객체를 추상화한.. 2023. 4. 22.
[Algorithm] DFS / BFS 알고리즘 공부를 하다 보면 DFS와 BFS라는 단어를 자주 접하게 되는데, 이는 트리 구조(또는 그래프)의 탐색과 관련된 알고리즘이다. 1. 깊이 우선 탐색 : DFS (Depth-First Search) 깊이 우선 탐색은 미로를 탐색할 때 벽을 따라 한 방향으로 끝까지 간 후 더 갈 수 없을 때 분기점으로 돌아와서 다른 방향으로 다시 탐색을 진행하는 방법으로 볼 수 있다. 모든 노드의 방문을 확인하고자 할 때 해당 탐색 방식을 채택하며, 기본적으로 BFS 방식보다 조금 더 느릴 수 있다. (Back-Tracking 과정으로 분기점 방문을 위해 노드를 거슬러 올라가는 과정이 존재) * DFS 특징 : 재귀적으로 호출하는 순환 알고리즘의 형태이다. 전위 순회(Pre-Order Traversals)를 포함한.. 2023. 4. 19.
[Docker] 컨테이너의 Resource 사용 확인 도커에서는 다양한 기능을 제공하고 있고, 각 컨테이너가 사용하고 있는 컴퓨터 자원을 확인하는 명령어 또한 존재한다. $ docker stats 위 명령어를 통해 Running 중인 컨테이너의 컴퓨터 자원의 사용량을 알 수 있다. 컨테이너의 CPU 또는 메모리를 과도하게 점유로 인하여 API 제공에 장애가 생길 수 있기 때문에, 서버에서 갑작스러운 속도저하 발생 시 해당 명령어를 통해 체크해 볼 수 있다. 명령어 입력 시 아래의 사진처럼 출력이 되며 실시간 사용량을 볼 수 있다. 2023. 4. 17.
[Database] N + 1 1. N + 1 Database에서 Query 1번으로 N건의 자료를 가져오고 각 건에 대하여 데이터를 조회하려고 할 때, 각 건마다 Query가 추가로 발생하는 현상 이는, 주로 Lazy Loading의 특성을 가진 ORM에서 많이 발생하고 아래 예시를 통해 보게 되면, * Lazy Loading : ORM의 객체를 통해 데이터가 처리되는 순간 Query가 발생 Ex : 과일 테이블에서 가격이 1만원 미만인 과일의 이름들의 배열을 얻고자 할 때, SQL문을 이용하면 Query 1회로 데이터를 얻을 수 있다. 하지만 ORM을 통하면 Code에 for문이 필요하고, 그로 인하여 N + 1 현상이 발생한다. 이는 DB에 불필요한 Query를 많이 발생시켜, 성능을 저하시키는 큰 요인이 된다. 하지만 대부분의.. 2023. 4. 12.
[Database] 이상 / 정규화 / 반정규화 DB를 이용할 때, 특정 조건을 충족하면 여러 문제를 야기할 수 있다. 이를 이상이라고 하며, 아래 내용을 통해 그 종류를 알 수 있다. 1. 이상 (Anomaly) 이상이란 DB에서 중복된 데이터 구조로 인하여 예기치 못하게 발생하게 되는 현상이다. 이상의 종류에는 3가지가 있다. 삽입 이상 : 데이터를 DB에 Insert 할 때, 의도하지 않은 값들이 같이 입력이 되는 현상 - Ex : 특정 속성의 값만 추가하고자 할 때, 다른 속성 값이 비게 되며 부분이 Null 값으로 입력되거나 데이터의 삽입이 실패하는 현상을 볼 수 있다. 삭제 이상 : 하나의 튜플을 삭제할 때, 의도하지 않은 값들과 함께 삭제되는 현상 - Ex : 특정 속성 값을 기준으로 튜플을 삭제하면 다른 속성들과 함께 삭제가 돼버리는 현.. 2023. 4. 11.