데이터 아키텍처는 어떻게 정의해볼 수 있을까? 엔터프라이즈 아키텍처에 대해 먼저 정의하는 것이 필수적이다.
💡
엔터프라이즈 아키텍처는 기업의 변화를 지원하는 시스템 설계로, 신중한 트레이드오프 평가를 통해 도달한 유연하고 되돌릴 수 있는 의사결정으로 달성된다.
아래는 데이터 아키텍처에 대한 책의 정의이다.
💡
데이터 아키텍처는 기업의 진화하는 데이터 요구 사항을 지원하는 시스템 설계로, 트레이드오프에 대한 신중한 평가를 통해 유연하고 되돌릴 수 있는 결정을 내림으로써 실현된다.
데이터 아키텍처 구성요소
우수한 아키텍처란?
등등을 포함!
AWS Well-Architected 프레임워크
구글 클라우드의 클라우드 네이티브 아키텍처를 위한 5대 원칙
위의 원칙들을 토대로 우수한 아키텍처가 되기 위한 원칙을 조금 더 자세히 살펴보자!!!
민첩성을 실현할 수 있어야 한다. 공통 컴포넌트는 적절한 사용 사례로 누구나 접근 가능해야하며, 동시에 부정 접근을 방지해야한다.
클라우드 플랫폼은 공통 컴포넌트를 채택하기 이상적인 장소다.
모든 것은 항상 실패한다. - 베르너르 포헐스, AWS CTO
단, 부적절하게 확장 전략 도입하면 시스템이 지나치게 복잡해지거나 비용이 너무 많이 들 수도 있으니 조심!
리더십이 기술에 대한 명령과 통제 방식을 의미하지는 않는다.
모범 사례를 학습하고 공통의 목표를 추구해야한다! 리더십을 연습하고 아키텍트의 조언을 구하자><
단순히 기존 상태를 유지하는 역할만 수행하는 게 아니라, 기술의 변화에 대응해 새롭고 흥미로운 것들도 끊임없이 설계해라
한 팀이 다른 팀에 의존하지 않고도 시스템을 테스트, 배포, 변경할 수 있도록 시스템 아키텍처가 설계되면, 해당 팀은 작업을 수행할 때 의사소통이 거의 필요하지 않다.즉, 아키텍처와 팀 모두 느슨하게 결합되어 있다.
API의 뒤에 데이터와 서비스를 두면서 → 느슨한 결합 가능해짐 → AWS 탄생함!
강화된 경계 보안 모델과 제로 트러스트 보안 모델
공동 책임 모델
보안 엔지니어로서의 역할도 해야한다.
핀옵스는 진화하는 클라우드 재무 관리 분야이자 문화적 관행으로, 엔지니어링 재무 기술 및 비지니스 팀이 데이터 기반 지출 결정을 위해 협업할 수 있도록 지원함으로써 조직이 비지니스 가치를 극대화할 수 있게 해준다.
아키텍처의 구성 요소 설명 전에 도메인과 서비스 개념에 대해서 이해하는게 필요함
도메인: 실제 설계하는 주제 영역
서비스: 작업 달성 기능 집합
ex. 예를 들어보자
판매 도메인: 주문 서비스, 송장 서비스, 상품 서비스
회계 도메인: 송장 서비스, 급여 서비스, 매출채권 서비스
확장성: 시스템 요량을 늘려서 성능을 개선하고 수요를 처리하는 거!
탄력성: 확장성이 뛰어난 시스템을 동적으로!! 확장하는거!
가용성: 작동 가능한 상태에 있는 시간의 비율
신뢰성: 시스템이 지정된 간격 동안 의도한 기능을 수행할 때 정의된 표준을 충족할 가능성(확률)이다.
이들의 관계는 어떨까? 신뢰성이 낮으면 가용성이 저하되겠지! 탄력성은 신뢰성을 확장시킨다!
문제점
일반적으로, 단일 머신으로는 높은 가용성과 신뢰성을 제공할 수 없다.
대안
분산 시스템을 활용해 전체 확장 용량을 늘림ㄱ뫄 동시에 가용성, 신뢰성 높인다!
수평확장시스템: 부하와 자원 요건을 충족하는 더 많은 머신을 추가할 수 있다.
ex. 리더노드 1 → 워커노드, 워커노드, 워커노드 (3)
리더노드 : 워크로드의 인스턴스화, 주요 창구를 담당
워커노드: 작업 분산 받고 결과를 리더 노드로 반환
분산 아키텍처의 중복성: 머신이 정지했을 경우, 다른 머신이 이어 받을 수 있도록 데이터 복제!
클러스터는 용량 복원을 위해 더 많은 머신을 추가할 수 있다.
분산시스템의 활용: 클라우드 데이터 웨어하우스 객체 스토리지 시스템에는 분산 개념이 거의 모두 포함된다!
강한결합: 도메인과 서비스의 모든 부분이 다른 모든 도메인과 서비스에 필수적으로 의존하며 긴밀하게 결합된 패턴!!!!
단일 계층 아키텍처: 서버 ( DB↔애플리케이션 )
강한 결합의 본질! 장애 위험 때문에 운영 환경에선 권장 X
모놀리스: 가능한 한 많은 것을 한 지붕 아래에 포함 = 강한결합! 컴포넌트의 모듈화가 부족, 재사용이 불가능하고 어려울 수 있음. 이에 대한 대안으로 분산형모놀리스 논의 시작됐는데 뒷장에 나온다고.. (코드 베이스 → 데이터베이스)
느슨한 결합: 서로 너무 의존하지 않으면서..분산형 도메인과 서비스가 있음
다중 계층 아키텍처: 가장 널리 쓰이는 3-tier architecture ( 데이터 계층 → 애플리케이션/로직 계층 → 프레젠테이션 계층 ) 상향식 구조
상향식 구조로, 강한 결합의 문제점을 분리로 해결한 버전이다. 계층적이며 하위 계층이 반드시 상위 계층에 의존하지는 않는다. 반면 상위 계층은 하위에 의존!
애플리케이션에서 데이터 분리, 프레젠테이션에서 애플리케이션 분리!
+) 비공유 아키텍처: 단일 노드가 각 요청을 처리하고, 다른 노드들이 해당 노드 또는 서로 간에 메모리, 디스크, CPU등 자원을 공유하지 않음.
+) 공유 디스크 아키텍처: 모든 노드에서 접근할 수 있는 동일한 디스크와 메모리를 공유해야 하는지 여부에 따라 결정
마이크로서비스: 개별적이고 분산되어 있으며, 느슨하게 결합된 서비스로 구성. 서비스의 분리와 새로운 병렬 아키텍처! (서비스 → DB, 서비스→ DB …)
문제점: 좀 많이 복잡할 수 있음.
대안: 1. 도메인 분리를 고려 2. 중앙집중화 3. 데이터 메시 (3장 뒷부분)
싱글: 사용자(or 테넌트) 가 독립된 소프트웨어 인스턴스 가짐
멀티테넌트: 하나의 소프트웨어 인스턴스를 다들 공유!
멀티테넌시의 고려사항: 성능과 보안!
테넌시 개념은 클라우드 컴퓨팅에서 특히 많이 사용된다… 그 중에서도 아마 모든 클라우드는 멀티테넌시를 채택함!
keyword: 생산자, 이벤트 라우터, 소비자
이벤트: 상태의 변화
아키텍처 구조: 생산자 → (이벤트)→ 이벤트 라우터 → (이벤트) → 소비자
장점: 이벤트의 상태를 여러 서비스에 분산시킴. 즉, 장애가 발생하거나 오프라인이 되거나 여러 소비자 또는 서비스가 동일한 이벤트에 접근하도록 할 때 유용.
서비스가 느슨하게 결합된 경우 항상 이벤트 중심 아키텍처가 후보가 됨!
둘의 차이점은 백지상태부터 시작하느냐, 기존의 것을 재설계해서 활용하느냐의 차이!
브라운필드: 기존의 코드를 리팩토링
(스탱글러패턴) : 기존의 것을 외과적으로, 한 번에 하나씩 대체
옛날꺼 폐기하면서 성장함으로써 성공을 입증하고, 결국 레거시가 완전히 대체되는 시점이 옴!
그린필드 프로젝트 : 완전 반대! 레거시 얽매이지 않고 새롭게 출발
쉬운 경향, but 이력서 주도의 개발으로 변질될 수 있음. 유행에 대한 강박 생길 수도
보편화 배경
→ 인건비와 자원을 대폭 줄일 수 있었다.
주목할만한 점 : 조직과 기술
조직: 팀의 구조와 프로세스
기술: MPP 시스템의 등장 (Massively Parallel Computer)
ETL의 변형 ELT: 데이터를 운영 시스템에서 데이터웨어하우스 스테이징 영역으로 어느 정도 직접 이동이 가능. 변환은 데이터 웨어하우스에서 직접 처리됨! 데이터 웨어하우스와, 데이터 처리 도구의 방대한 계산 능력을 활용. 데이터 일괄 처리. 기록
On-demand 방식(사용자의 요구가 있었을 때 그 요구에 따라 서비스를 제공하는 것)의 스핀업(to create virtual machine using cloud computing ex. to spin up a new server)
클라우드 데이터 웨어하우스가 제공하는 기능 영향이 매우 크기 때문에, 데이터 웨어하우스 용어가 폐기될 수도 있음..!! MPP시스템에서 제공하는 것보다 훨씬 광범위한 기능 갖춘 새로운 데이터 플랫폼으로 발전하고 있다.
단일 하위 조직이나 부서 / 비지니스 라인에 초점 맞춰 분석 및 보고서를 제공하도록 설계된 웨어하우스의 한층 더 정교한 하위집합이다.
데이터 마트가 왜 필요할까?
정형과 비정형 모두 중앙 위치에 저장하고 엄격한 데이터 구조적 제한을 가하지 않는다!
역사
기능
단점 (매우 치명적임..)
데이터 웨어하우스 + 데이터 레이크
(데이터 레이크와 유사)
데이터 웨어하우스와 데이터 레이크의 기능을 융합
중요성이 증가하고 있음 !!!
모던 데이터 스택: 현재 유행하는 분석 아키텍처! 향후 몇 년 동안 더 널리 사용되리라 예상되는 추상화 유형을 강조함.
등장 배경
람다 아키텍처
문제점
장점
채택 X 이유
핵심과제 배치 및 스트리밍 데이터를 통합하는 것 !!
카파 아키텍처의 문제점
데이터 흐름 모델, 아파치 프레임워크 (구글)로서의 해결
배치는 스트리밍의 특수한 경우다 !
사물인터넷: 주변 환경에서 주기적으로 또는 지속해서 데이터를 수집해 목적지로 전송하는 장치에서 데이터를 생성
장치 : 데이터 수집하는 장치는 모두 IoT 장치이다.
장치와 인터페이스:
수집
스토리지
서빙
개념
(중앙 집중식 데이터 레이크 및 데이터 웨어하우스 같은)데이터 모놀리식 데이터 플랫폼 ↔ 운영 데이터와 분석 데이터
사이에서 환경이 구분되는 ‘데이터 격차’에 대한 최근의 대응책이다.
포인트
핵심 구성 요소
종류 엄청 다양
데이터 엔지니어의 역할
아키텍트의 역할
경계의 모호