본문 바로가기

데이터엔지니어링10

[Chapter 1] 데이터 엔지니어링 이 책에서는 다음과 같이 데이터 엔지니어링과 데이터 엔지니어를 정의한다. 데이터 엔지니어링은 원시 데이터(raw data)를 가져와 분석 및 머신러닝과 같은 다운스트림 사용 사례를 지원하는, 고품질의 일관된 정보를 생성하는 시스템과 프로세스의 개발, 구현 및 유지 관리이다. 데이터 엔지니어링은 보안, 데이터 관리, 데이터 운영, 데이터 아키텍처, 오케스트레이션, 소프트웨어 엔지니어링의 교차점이다. 데이터 엔지니어는 원천 시스템에서 데이터를 가져오는 것부터 시작해 분석 또는 머신러닝과 같은 사용 사례에 데이터를 제공하는 것으로 끝나는 데이터 엔지니어링 수명 주기를 관리한다. 데이터 엔지니어링 수명 주기라는 아이디어를 중심보면 데이터는 생성, 저장, 수집, 변환, 서빙 뿐만 아니라 드러나지 않는 요소인 보안.. 2023. 11. 3.
[6장] 클러스터 운영하기 클러스터 사이징과 스케일링 클러스터 용량 계획 세우기 용량을 산정하는 초기 측정 법은 동일한 애플리케이션을 실행하는 데 필요한 기존 서버의 수를 계산하는 것이다. 가장 작은 클러스터 가장 작은 쿠버네티스 클러스터는 단일 노드 구성이나, 안정적인 쿠버네티스 클러스터를 위한 최소한의 마스터 노드 개수는 세 개이다. 워크로드를 실행하는데 작은 클러스터로도 가능하나 권장하지 않는다. 클러스터 컨트롤 플레인이 고가용성을 보장한다면, 단일 노드로 운영해도 되나, 노드 장애를 고려해서 최소 두 개의 워커 노드로, 쿠버네티스가 모든 파드의 레플리카를 최소 두 개씩 실행하게 하는 것을 권한다. 가장 큰 클러스터 쿠버네티스는 공식적으로 최대 5000개 노드의 클러스터를 지원하며, 15만 개 이하의 파드, 30만 개 이하의.. 2023. 8. 3.
[5장] 리소스 관리 리소스 이해하기 워크로드에 사용 가능한 클러스터 리소스를 최대한 활용하는 동시에 트래픽 폭증, 노드 장애, 잘못된 배포 상황에 대처할 수 있는 충분한 여유 공간을 확보할 수 있는 방법은 무엇이 있을까?? 쿠버네티스 스케줄러 관점에서 생각을 해보자. 여기서, 스케줄러는 주어진 파드를 어디에서 실행할지 결정하는 역할을 하는데, "파드를 실행할 수 있는 충분한 리소스를 가진 노드가 있는가?" -> 파드를 실행하는데 얼마나 리소스가 드는지 알아야 답을 할 수 있다. 리소스 단위 파드의 CPU 사용량은 CPU 단위로 표시되며, 쿠버네티스 CPU는 AWS의 vCPU, 구글 클라우드의 코어, AZURE의 vCore와 동일하다. 쿠버네티스 용어로 1CPU는 일반적인 CPU단위로 보면 된다. 대부분의 파드는 CPU 전체.. 2023. 7. 4.
[4장] 쿠버네티스 오브젝트 다루기 디플로이먼트 만약 컨테이너가 종료가 된다면, 터미널에 접속하여 docker container run 명령어로 컨테이너를 다시 시작해줘야하는 불편함이 있다. 이런 방식은 불편하며, 지속적으로 컨테이너가 실행 중인지 혹은 정지되었다면 다시 실행해야하는지 관리하는 관리프로그램이 필요하다. 전통적으로 systemd, runit, supervisord 같은 도구를 사용하고, 쿠버네티스의 경우 디플로이먼트라는 관리자 기능을 제공한다. 관리와 스케줄링 쿠버네티스는 각 프로그램을 관리하기 위해 디플로이먼트 오브젝트를 생성하는데, 디플로이먼트 오브젝트에는 해당 프로그램에 대한 정보가 기록된다. 쿠버네티스의 오브젝티브인 컨트롤러는 디플로이먼트 리소스를 관리하며, 컨트롤러는 리소스가 존재하고 작동하는지 확인한다. 컨트롤러는.. 2023. 6. 20.