DX Data School 38

Deployment

1. Deployment Pod (Kubernetes의 배포 단위) 배포에 관한 객체 Pod를 배포하고 몇 개의 Pod를 실행할 지 결정할 수 있음 Docker-Compose : 여러 개의 컨테이너를 묶어서 실행 Pod : 여러 개의 컨테이너를 묶어서 쿠버네티스에서 배포하는 단위 Deployment 나 ReplicaSet 을 이용하면 여러 개의 Pod를 생성할 때 직접 명령어를 입력할 필요가 없음 Pod는 문제가 발생해서 종료될 경우 자동으로 다시 배포가 이루어짐 (바람직한 상태를 유지함) 1) nginx 배포 배포를 위한 yaml 파일 작성 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy labels: app: nginx spec: ..

DX Data School 2024.04.09

쿠버네티스 (Kubernetes)

1. 컨테이너 오케스트레이션 1) 개요 다수의 컨테이너를 유기적으로 연결 및 실행할 뿐 아니라 상태를 추적하고 보존하는 등 컨테이너를 안정적으로 사용할 수 있게 만들어주는 것 2) 솔루션 Docker Swarm 간단하고 설치도 용이한데 기능이 다양하지 않아 소규모 환경에서는 유용하지만 대규모 환경에서는 거의 사용하지 않음 Mesos 아파치의 오픈 소스 프로젝트로 트위터, 에어비엔비, 애플, 우버 등에서 사용한 검증된 솔루션으로 대규모 서버 환경에서 자원을 유연하게 공유하고 하나의 자원처럼 관리하는 DC/OS의 지원으로 매우 간결하지만 기능적으로 충분하긴 하지만 여러 가지 솔루션을 유기적으로 구성해야 하는 부담 발생 nomad 베이그런트를 제작한 해시코프에서 만든 솔루션으로 특징은 Docker Swarm과..

DX Data School 2024.04.08

Docker 2

1. Container 관련 명령 1) Container로 애플리케이션 실행 이미지는 읽기 전용의 불변 값으로 만들어짐 (정적 - Class) 이러한 이미지를 바탕으로 도커 엔진은 컨테이너 (동적 - Instance)를 생성할 수 있는데 이 때 이미지와 함께 읽고 쓰기가 가능한 레이어를 추가해서 만들어진다. 2) Container는 Process 컨테이너는 이미지를 기반으로 만들어지는 snapshot 컴퓨터 프로그램이 실행중이면 프로세스라고 하는데 Container는 격리된 공간에서 동작하는 프로세스임 docker run 명령어로 컨테이너가 만들어지고 동작하는데 이는 서버 호스트 운영체제가 독립적으로 동작하는 것과 유사하다 3) Image를 받아 Container를 생성 및 실행 과정 gihyodocke..

DX Data School 2024.04.08

Docker

1. Docker 1) 개요 Container 형 가상화 기술을 구현하기 위한 애플리케이션(Docker Engine) 과 이 애플리케이션을 조작하기 위한 명령행 도구(Docker CLI)로 구성되는 애플리케이션 같이 사용하는 프로그램 데이터를 다른 컨테이너 와 격리시키는 기능을 제공하는 애플리케이션 2) 특징 Micro Service 전환은 물론 DevOps, Testing 등 다양한 분야에서 활용 Linux Container 구현체의 사실상(de-facto) 표준 3) Docker는 Linux를 사용 Docker는 Linux를 필요로 함 Windows 나 Mac OS에서는 Docker를 구동할 수 있는지만 이 경우 내부적으로 Linux 가 사용되며 Container에서 동작하는 프로그램도 Linux 용..

DX Data School 2024.04.05

Container 와 Virtualization

1. Container 와 Virtualization 1) Virtualization(가상화) 서버, 스토리지, 네트워크 및 물리적 시스템에 대한 가상 표현을 생성하는데 사용할 수 있는 기술 가상화 소프트웨어는 물리적 하드웨어 기능을 모방해서 하나의 물리적 컴퓨터에서 여러 가상 시스템을 동시에 실행하는 것이 가능하도록 함 하드웨어 리소스를 효율적으로 사용해서 투자 대비 이익을 더 많이 얻을 수 있고 클라우드 컴퓨팅 서비스를 지원해서 조직의 인프라를 더욱 효율적으로 관리할 수 있음 ​ 2) 장점 효율적인 리소스 사용 자동화된 IT 관리 신속한 재해 복구 ​ 3) 가상화 서비스 서버 가상화 스토리지 가상화 네트워크 가상화 네트워크 기능 가상화 SDN (Software Defined Networking) 물리..

DX Data School 2024.04.05

CI/CD

1. CI/CD 1) 개요 CI/CD의 개념은 Continuous Integration (지속적인 통합), Continuous Delivery (지속적인 제공), Continuous Deployment (지속적인 패포) 애플리케이션 개발 단계를 자동화해서 애플리케이션을 보다 짧은 주기로 고객에게 전달하기 위한 방법 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하는 방법이다 지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 레포지토리에 병합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제 해결 2) 지속적인 통합 (Continuous Integration) 개발팀이 작은 변경..

DX Data School 2024.04.05

MSA 구성 요소 및 MSA 패턴

1) 구성 요소 및 패턴의 유형 인프라 구성 요소 플랫폼 패턴 애플리케이션 패턴 2) 인프라 구성 요소 가상화 되어 제공됨 Public Cloud 베어 메탈 Private Cloud Virtual Machine Container(Docker) 컨테이너 오케스트레이션(Kubernetes) 3) 플랫폼 패턴 DevOps 인프라 구성 개발과 운영이 분리되지 않은 개발 및 운영을 병행할 수 잇는 조직 또는 문화 CI/CD : 지속적인 인도와 배포를 위한 파이프라인 설계 넷플릭스에서는 플랫폼 패턴으로 Spring Boot + 넷플릭스 OSS 조합을 이용 BFF (BackEnd For FrontEnd) 패턴 애플리케이션 종류별로 진입점을 만들고 API 게이트웨이를 이용해 서비스를 이용하는 방식 다양한 모바일 장비 ..

DX Data School 2024.04.01

리액티브 선언

현대 애플리케이션이 갖춰야 할 바람직한 속성들 리액티브 선언의 4가지 요소 응답성 (Responsive) : 사용자에게 신뢰성있는 응답을 빠르고 적절하게 제공하는 것 탄력성 (Resilient) : 장애가 발생하거나 부분적으로 고장이 나더라도 시스템 전체가 고장나지 않고 빠르게 복구하는 능력 유연성 (Elastic) : 시스템 사용량에 변화가 있더라도 균인한 응답성을 제공하는 것을 의미하며 시스템 사용량에 비례해서 자원을 늘리거나 줄이는 능력 메세지 기반 (Message Driven) : 비동기 메세지 전달을 통해 위치 투명성, 느슨한 결합, 논 블로킹 통신을 지향하는 것 위치 투명성 - 여러 개의 마이크로 서비스가 하나의 시스템을 만들어 서비스를 제공하는 경우 각 마이크로 서비스의 위치나 구현되는 방법..

DX Data School 2024.04.01

Micro Service를 구현하기 위한 조건

조직의 변화 : 업무 기능 중심의 팀 콘웨이 법칙 - 시스템을 개발할 때 항상 시스템의 모양이 팀의 의사소통 구조를 반영하도록 하는 것 다양한 역할 (기획자, 디자이너, Front End 및 Back End 개발자, 설계자 등)로 구성되고 서비스를 처음부터 끝까지 만들기 위한 모든 단계의 역할을 갖추고 있는 팀 같은 공간, 같은 시간을 공유하기 때문에 의사소통도 원할하고 의사 결정도 빠르게 진행 관리 체계의 변화 - 자율적인 분권 거버넌스, Polyglot 팀은 빠르게 서비스를 만드는 것을 목적으로 두고 스스로 효율적인 방법론과 도구, 기술을 찾아 적용 자기 서비스에 맞는 기술을 이용하도록 하는 것 개발 수명 주기의 변화 - 프로젝트가 아닌 제품 중심 초기에 모든 일정을 계획하고 요구 사항 정의를 통해 ..

DX Data School 2024.04.01

Monolithic과 Micro Service

Monolithic 하나의 단위로 개발되는 일체식 Application 보통 3-Tier라 불리는 사용자 인터페이스와 데이터베이스 그리고 서버 쪽 Application으로 구성 서버 측 애플리케이션이 일체 즉 논리적인 단일체로서 아무리 작은 변화에도 새로운 버전으로 전체를 빌드해서 배포해야 하고 일체식 애플리케이션은 단일 프로세스에서 실행되기 때문에 확장이 필요할 경우 특정 기능만 확장할 수 없고 반드시 전체 애플리케이션을 동시에 확장해야 하는데 보통 로드 밸런서를 앞에 두고 여러 인스턴스 위에 큰 덩어리를 복제해 수평으로 확장 확장하고자 할 때 로드 밸런서를 앞에 두고 여러 인스턴스 위에 큰 덩어리를 복제하여 수평 확장 복제된 시스템에서는 변경이 발생하면 여러 개의 Monolithc 시스템 모두를 전부..

DX Data School 2024.04.01