-
[Kubernetes] 쿠네티스 ReplicaSet
들어가며 Reference Read More
-
[Kubernetes] 쿠버네티스 구조
Kubernetes Architecture Overview 컨트롤 플레인 구성 요소 컨트롤 플레인의 구성 요소는 클러스터에 대한 전역 결정(예: 스케줄링)을 내리고 클러스터 이벤트를 감지 및 응답(예: 디플로이먼트의 레플리카 필드가 충족되지 않을 때 새 파드 시작)한다. 컨트롤 플레인 구성 요소는 클러스터의 모든 머신에서 실행할 수 있다. 그러나 보통은 설정 스크립트는 일반적으로 동일한 머신에서 모든 컨트롤 플레인 구성 요소를 시작하고 이 머신에서 사용자 컨테이너를 실행하지 않는다. kube-apiserver kube-apiserver는 클러스터 내 모든 작업의 핵심 통로라고 볼 수 있다. 쿠버네티스 API를... Read More
-
[Architecture] 파이썬으로 구현하는 클린 아키텍처 (2)python 프로젝트 구현하기
들어가며 목표 전체 구조 계층별 설명 1. 엔터티 계층 2. 유스케이스 계층 3. 인터페이스 계층 4. 프레임워크와 드라이버 계층 이전 글 [Architecture] 파이썬으로 구현하는 클린 아키텍처 (1)클린 아키텍처란? Reference Clean Architecture in Python 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
-
[Virtumall #3] MySQL FULLTEXT 인덱스란?
기존 검색 SQL 쿼리에서 검색 성능을 높이기위해 인덱스의 사용은 매우 중요합니다. 인덱스는 보통 B-Tree 구조로 가장 왼쪽 접두사를 사용하는 경우에만 유용합니다. Virtumall 프로젝트에는 product(상품) 테이블이 있고 사용자가 상품을 검색하면 product.name에 검색어가 포함되어 있는지 확인하여 결과를 반환했습니다. product.name에 인덱스가 적용되어 있었지만, SELECT * FROM product WHERE product.name LIKE '%keyword%' 와 같이 검색을 하고 었고 LIKE %keyword% 구문은 인덱스를 타지않아 full scan이 이루어지고 있었습니다. ... Read More