앤서블은 자동화 솔루션이며 기본적으로 단순 반복 작업을 빠르게 처리 할 수 있도록 해줍니다. 이를 통해 운영자는 작업 시간을 감소할 수 있고, 이러한 시간에 들어가던 시간을 다른 부분에 집중할 수 있으므로 오히려 기업의 서비스 품질을 향상 시킬 수 있다고 할 수 있습니다. 수많은 인프라를 관리하는 경우 보안취약점에 따른 패치 및 서버 프로비저닝과 같은 업무영역들은 앤서블을 통하여 자동화가 가능합니다. 또한, 클라우드 환경의 경우 테라폼과 연계하여 다양한 퍼블릭 프로바이더 환경을 프로버저닝할 수 있기 때문에 이런 부분을 통해 효과적으로 업무에 활용 할 수 있습니다.
AWS의 CloudFormation의 경우에는 AWS 환경에서만 사용이 가능하다는 제약점이 존재합니다. 반면 Red Hat 앤서블의 경우에는 모든 인프라 환경에서 사용이 가능하며, 에이전트 설치가 필요 없다는 점 입니다. 주로 도입 목적은 인프라 자동화, 애플리케이션 라이프 사이클 자동화, 보안 자동화 등 기업 환경에 맞게 필요한 업무에 도입하여 사용 하실 수 있습니다.
네, Ansible은 다른 도구들과 다르게 Automation + Orchestration + Agile을 포함한 솔루션으로 설명 들일 수 있습니다. 또한 에이전트리스 형태로 가볍고, 안전하게, 많은 3rd 파티 벤더를 거느린 솔루션 입니다.
앤서블은 여러 대의 서버를 효율적으로 관리하는 IT 환경 자동화 도구로 설치된 인프라를 자동으로 관리하는데 초점이 맞춰져 있다고 할 수 있습니다. 그렇기 때문에 소프트웨어 설치 및 업데이트, 사용자 생성 및 제거, 애플리케이션 배포 등과 같은 작업을 수행 할 수 있습니다. 테라폼은 서버 등과 같은 기본적인 인프라 배포에 최적화 되어 있는 도구로 AWS, GCP, Azure와 같은 주요 클라우드 서비스를 비롯한 다양한 클라우드 서비스들을 생성 할 수 있습니다. 대부분 REST API가 오픈되어 있기 때문에 이것을 이용해서 테라폼 코드로 작성을 하면 AWS, GCP, Azure 등을 배포하고 관리 할 수 있습니다. 요약하자면 앤서블은 Post-Provisioing에 해당한다고 보시면 되고, 테라폼은 Pre-Provisioing에 해당한다고 볼 수 있겠습니다.
Ansible의 클라우드 지원 모듈 라이브러리를 사용하면 필요할 때마다 인스턴스, 네트워크 및 완전한 클라우드 인프라를 쉽게 프로비저닝할 수 있습니다. 애플리케이션 배포 및 온프레미스 가상화 자동화에 사용하는 것과 동일한 간단한 플레이북 언어도 인프라를 프로비저닝하고 여기에 올바른 구성을 적용합니다. Ansible은 클라우드 배포가 단일 시스템을 구축할 수 있는 것처럼 쉽게 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전반에서 원활하게 작동하도록 합니다. 지원하는 플랫폼은 AWS. GCP, Azure, VMware, Rackspace, DigitalOcean, Cloudstack, OpenStack 등이 있습니다. 자세한 내용은 https://www.ansible.com/integrations/cloud 참고 부탁 드립니다.
도커 허브에서 제공하는 이미지의 경우 공개된 오픈소스 레파지토리에서 제공하는 것으로 레드햇에서 검증을 하고 있지는 않습니다. 레드햇에서 검증하고 인증하고 있는 이미지에 대해서는 registry.redhat.io를 통해서 버그 픽스, 보안패치 등을 제공하고 있습니다.
컨테이너의 장점 중 하나는 이식성이라고 할 수 있는데요. 컨테이너는 비교적 간단한 작업으로 컨테이너를 클라우드 환경으로 전환가능합니다. 레드햇의 오픈시프트의 경우 이미 CSP 인증된 다양한 클라우드 프로바이더에서 제공하는 관리형 OCP 서비스 및사용자 관리형 서비스 혹은 OpenShift Dedicated 서비스 등을 통해 동일한 환경으로 쉽게 마이그레이션이 가능합니다. 보안에 관련된 부분은 오픈시프트 4.x 버전은 컨테이너 전용 OS인 Red Hat CoreOS로 공격 표면인 최소화 되어 있습니다. 기존 레거시 환경에서 설치형으로 된 솔루션은 사용이 어려우며 해당 3rd-party 업체를 통해 컨테이너 환경에서 컨테이너 이미지 혹은 프록시 형태로 제공하는지 여부를 확인하셔야 합니다. 감사힙니다.
쿠버네티스는 쉽게 말씀 드리면 오픈소스 컨테이너를 관리하는 오케스트레이션 솔루션입니다. 이러한 오픈소스 쿠버네티스를 엔터프라이즈 환경에서 보다 쉽게 사용할 수 있도록 필요한 기능을 포함하여 제공하는 솔루션이 오픈시프트입니다. DevOps와 연동을 위해서는 쿠버네티스의 경우 필요한 도구들 예를 들면, 빌드 도구, 애플리케이션 런타임, 로깅, 젠킨스 등을 각각의 오픈소스로 구현하여 운영자가 직접 구성을 해야합니다. 오픈시프트의 경우에는 빌드 도구, 전통적인 WEB/WAS 뿐만 아니라 마이크로 서비스를 수행하기 위한 런타임, 로깅, 젠킨스 등을 제품 내에서 임베딩하여 제공하고 있으며 이를 쉽게 연계할 수 있도록 제공하고 있다고 보시면 되겠습니다.
kiali 대시보드를 통해서 MS를 수정하고 실시간으로 배포할 수 있습니다.
MSA는 만능이라기 보다는 기존의 분산 아키텍처의 문제점을 해결 할 수 있는 방안 중에 하나의 해결 방법이라고 할 수 있습니다. MSA에 효과적인 영역이라고 한다면 시스템이 복잡하지 않으면서도 규모가 크지 않은 구조에서 효과적이라고 할 수 있습니다. MSA 도입을 고려하신다면 리스크가 적은 업무부터 Poilt으로 해보시고, 점차 늘려가시는 것이 좋을 것 입니다.
실제 기업에 적용하는 경우에는 MSA를 위한 Kiali로 트래픽에 대한 상태 체크 및 트래픽 흐름 등을 실시간으로 확인할 수 있으며, Jaeger를 통해서 서비스에 대한 트레이싱도 가능합니다. 이 외에 별도 툴이 필요하거나 자체적으로 보유하고 있는 도구가 있다면 그 도구를 포함하여 운영 환경에서 더욱 서비스에 대한 관리를 수월하게 하실 수 있으실 것 입니다.
도커는 컨테이너 런타임+이미지 관리, 빌드 등이 포함 되어 있어 무겁습니다. CRI-O는 컨테이너 실행을 위한 것으로 훨씬 가볍다고 말씀 드릴 수 있습니다. 이미지를 위한 도구와 빌드에 필요한 도구는 별도로 사용 가능하도록 분리 되어 있습니다. (ex. podman, buildah, skopeo)
AIX 장비에서는 빌드 및 기능에 대해서는 제한이 있으며, AMQ Streams는 기본적으로 오픈시프트 컨테이너 플랫폼 기반에서 운영 및 구성이 가능하므로 리눅스 환경을 고려해 주셔야 합니다.
Red Hat AMQ는 다양한 언어로 작성된 클라이언트 프로그램과의 연결을 지원합니다. Java 클라이언트 외에도, C, C++, Python, .Net 등의 기본 연결을 지원합니다.
Kafka 데이터를 효율적으로 관리하기 위해서는 Storage의 I/O 성능이 가장 중요하다고 할 수 있습니다. 이 외에 Memory, CPU등 성능도 중요하지만 크게 영향을 미치지는 않습니다.
Zookeeper는 kafka 클러스터의 한 구성 요소로 kafka를 운영하기 위한 코디네이터 서비스라고 보시면 되겠습니다. Zookeeper에는 kafka 클러스터의 식별 정보부터 현재 살아 있는 broker 정보 등이 저장되므로 중앙에서 관리하는 역할을 한다고 생각해 주시면 되겠습니다.
카프카를 쿠버네티스 기반에서 구성 할 수 있는 업스트립 프로젝트로는 Strimzi가 있습니다. 이를 기반으로 쿠버네티스 환경에 배포가 가능하며, 오픈시프트 4버전에서는 Strimizi를 기반으로 한 엔터프라이즈 버전인 AMQ Streams를 오퍼레이터 형태로 배포 가능합니다. 오퍼레이터 형태로 배포 시 Zookeeper, producer, consumer, user등 관련 컴포넌트들을 컨테이너 기반으로 쉽게 구축하여 사용 할 수 있습니다. 운영 관점에서는 빠르게 확장 해야 하는 업무의 경우 컨테이너 기반 환경에서 보다 쉽고 빠르게 서비스를 확장 할 수 있다는 이점이 있습니다.
Apache Kafka는 높은 처리량과 확장성이 반드시 필요한 다양한 활용 사례를 지원합니다. 특정 애플리케이션에서 데이터 공유를 위한 포인트 투 포인트 통합의 필요성을 최소화하므로 지연 시간을 밀리초 단위로 줄일 수 있습니다. 또한, 초당 수백만 개의 데이터 포인트를 처리할 수 있으므로 빅데이터 과제에 매우 적합합니다. SNS와 같은 여러 데이터 처리 활용 사례의 경우 데이터는 계속해서 늘어나기 때문에 현재 데이터 볼륨을 기반으로 구축하고 있는 애플리케이션에서 빠르게 부담을 가중시킬 수 있으므로, 데이터 처리의 경우 이러한 경우를 대비하여 확장성을 고려해야 합니다.