-
[Kubernetes] Control Plane의 etcd
etcd 란? Kubernetes는 기반 스토리지(backing storage)로 etcd를 사용하고 있고, 모든 데이터가 etcd에 보관된다. 예를 들어, 클러스터에 어떤 노드가 몇 개나 있고 어떤 파드가 어떤 노드에서 동작하고 있는지가 etcd에 기록된다. 만약 동작 중인 클러스터의 etcd 데이터베이스가 유실된다면 컨테이너뿐만 아니라 클러스터가 사용하는 모든 리소스가 미아가 되어버린다. etcd는 고가용성과 데이터의 일관성을 보장하기 위해 일반적으로 3개 이상의 etcd 인스턴스로 클러스터를 구성한다. etcd는 RSM(Replicated state machine) 분산 컴퓨팅 환경에서 서버가 몇 개 다... Read More
-
[Kubernetes] Control Plane의 ControllerManager
들어가며 전체 그림 Reference Read More
-
[Kubernetes] 쿠버네티스 구조
들어가며 쿠버네티스는 대부분의 리소스를 ‘오브젝트’라고 불리는 형태로 관리한다. 쿠버네티스를 소개하는 책 대부분이 쿠버네티스의 주요 오프젝트인 파드, 레플리카셋, 디플로이먼트, 서비스 등을 소개하며 시작한다. 나는 오브젝트를 생성하고 사용하며 쿠버네티스를 알아보기에 앞서 쿠버네티스가 어떤 구조를 가지고 있고 각 오브젝트의 실체는 무엇이며 어디에서 생성되어 어떻게 동작하는지 를 알아야 각 기능을 더 빨리 이해하고 기억하는 편이다. 전체 구조부터 주요 구성요소의 동작을 간단하게 살펴보고 쿠버네티스의 주요 기능을 알아가는 순서로 공부해 보려고한다. 이번 포스트는 먼저 쿠버네티스의 전체 구조와 핵심 컴포넌... Read More
-
[Architecture] 파이썬으로 구현하는 클린 아키텍처 (2)python 프로젝트 구현하기
들어가며 이전 포스트에서 “클린 아키텍처”에 대해 간단하게 알아봤다. 이번 포스트에서는 객실을 대여하는 Rent-O-Matic이라는 프로젝트에서 객실(Room)을 조회하는 기능을 구현하며, 클린 아키텍처의 계층별 시스템 구조와 의존성 방향에 대해 정리한다. 코드는 여기서 볼 수 있다. Rent-O-Matic Rent-O-Matic은 REST API를 통해 Room 이라는 데이터를 조회(GET)할 수 있는 기능을 제공한다. 기능은 아래와 같다. GET /rooms 요청에 대해, 데이터를 실어 응답한다. GET 요청의 파라미터로 조건(filter)을 지정해 원하는 조건의 객실만 조회할 수 있다. 전체 ... Read More
-
[Architecture] 파이썬으로 구현하는 클린 아키텍처 (1)클린 아키텍처란?
들어가며 처음 소프트웨어 아키텍처를 공부할 때, “클린 아키텍처”는 “잘 설계된 모든 아키텍처”를 이르는 말이라고 생각했던 기억이 난다. “클린 아키텍처”는 로버트 C. 마틴이 그의 블로그 글에 사용하면서 유명해졌다. 그는 클린한 소프트웨어 아키텍처는 새로운 것이 아니라 여러 소프트웨어 엔지니어에 의해 여러 해 동안 홍보되었음을 명확하게 언급하고 있지만 그럼에도 불구하고 “클린 아키텍처”라는 용어는 명확한 정의와 구조를 제공하면서 많은 개발자들에게 큰 영향을 미쳐온 것 같다. 로버트 C. 마틴은 소프트웨어 아키텍처가 단순히 코드가 잘 동작하는 것만을 목표로 하는 것이 아니라, 유연성, 테스트 용이성, 독립성을... Read More
-
[Data Engineering] 데이터 볼트(Data Vault)의 구체적인 예시
들어가며 데이터 모델링2 - 데이터 볼트(Data Vault)를 이해해보자(3NF vs Dimensional model vs Data Vault)에서 본 데이터 볼트 모델링 방법으로, 실제로 모델링을 해보려고합니다. 구체적인 쿼리와 함께 살펴봅시다. 데이터 볼트(Data Vault) 소개 데이터 웨어하우징은 데이터를 유용한 정보로 통합, 집계, 요약하기 위한 기술입니다. 이를 위해 데이터 웨어하우스 엔지니어는 스테이징 계층, 클렌징 계층, 코어 계층, 데이터 마트 계층과 같은 계층을 기반으로 다양한 아키텍처를 적용합니다. 코어 계층의 목표는 여러 소스의 데이터를 통합하고 기록하는 것입니다. 또한 코어 계층은 BI... Read More
-
[Data Engineering] 데이터 모델링이란?(인몬, 킴볼, 데이터볼트)
데이터 웨어하우징 모델링이란? 데이터 모델은 데이터가 실제 세계와 연관되는 방식을 나타냅니다. 데이터 모델링은 데이터의 일관성 있는 구조를 의도적으로 선택하는 작업이며, 데이터를 비즈니스에 유용하게 만드는 단계입니다. 정규화 기법은 RDBMS 초기부터 데이터 모델링에 사용되어왔습니다. 지금도 여전히 운영 데이터베이스의 모델링은 정규화기법을 사용하며 데이터 웨어하우징 모델링 기법도 1990년대 초반부터 사용되어 온 것으로 보입니다. 데이터 웨어하우징 모델링은 분석 쿼리를 운영 데이터베이스에서 분리하는 것에서 시작되었습니다. 데이터 관리(특히 데이터 거버넌스 및 데이터 품질)의 인기가 높아짐에 따라 일관성 있는 비즈... Read More
-
[Data Engineering] 스트림 프로세싱(실시간 데이터 처리) - 2.스트림 프로세싱의 확장성을 확보하고 성능을 최적화하기 위한 패턴들
스트림 프로세싱 관련 글 1.스트림 프로세싱 패턴들 2.스트림 프로세싱의 확장성을 확보하고 성능을 최적화하기 위한 패턴들 3.스트림 프로세싱 서버가 터져도 살아남는 법 (aka 신뢰성 확보) 확장성 및 성능 최적화 패턴 스트림을 처리하는 클라우드 네이티브 애플리케이션은 독특한 확장성과 성능에 대한 요구사항을 가지고 있습니다. 예를 들면 애플리케이션이 이벤트를 처리하는 동안 이벤트의 순서를 지켜야한다는 점이 있죠. 이런 애플리케이션은 주로 메모리에 상태를 저장하기 때문에 정확도를 해치지 않으면서 이벤트를 처리할 수 있는 확장전략을 마련해야합니다. 1) 순차 수송 패턴 이벤트를 다양한 분류로 나누고 병렬... Read More
-
[Data Engineering] 스트림 프로세싱(실시간 데이터 처리) - 1.스트림 프로세싱 패턴들
스트림 프로세싱 관련 글 1.스트림 프로세싱 패턴들 2.스트림 프로세싱의 확장성을 확보하고 성능을 최적화하기 위한 패턴들 3.스트림 프로세싱 서버가 터져도 살아남는 법 (aka 신뢰성 확보) 데이터의 홍수 속 실시간 데이터 처리는 다양한 애플리케이션과 의사결정의 도구로 사용되고 있습니다. 오늘은 클라우드 네이티브 애플리케이션에서의 스트림 프로세싱에 대해 알아보고 상황별로 적용할 수 있는 스트림 프로세싱 패턴들에 대해 알아보겠습니다. 스트림이란? 스트림이란 시간 순서에 따라 정렬된 일련의 연속적인 이벤트들을 말합니다. 각 스트림들은 서로를 고유하게 구분할 수 있는 이름 및 버전으로 구성된 식별자를 가집... Read More
-
[Virtumall #4] Django에 MySQL FULLTEXT 인덱스 적용하기(feat. custom-lookups)
FULLTEXT 인덱스가 무엇이고 언제 사용하면 좋은지, 명령어는 어떻게 사용하는지를 보려면 MySQL FULLTEXT 인덱스란?을 참고해주세요. 이 포스팅에서는 FULLTEXT 인덱스를 Django 어플리케이션에 적용하는 방법을 설명합니다. Django에 FULLTEXT 인덱스 적용하기 먼저 현재 장고에서는 FULLTEXT 인덱스를 ORM으로 지원하지 않기 때문에 직접 데이터베이스에 FULLTEXT 인덱스를 적용하는 쿼리를 해줘야합니다. 1. 아래 명령어로 마이그레이션 파일을 직접 생성해줍니다. python manage.py makemigrations {app_name} --empty --settings=a... Read More