본문 바로가기
Development(Web, Server, Cloud)/22) LINUX - Cloud

4. KRE 선정 - 장단점 비교(Ecosystem 선정 Cloud native 선정)

by tonyhan18 2022. 8. 3.
728x90

0. B.G

KRE(Kubernetes Response Engine) 이란 보안 위협으로부터 보안 이벤트를 발생시켜주는 playbook이다.

serverless framework 이란 k8s에서 별도의 application을 위한 container(pod, deployment)를 실행하지 않고, 함수만 작성하여 서비스를 제공할 수 있도록 하는 기술.

Serverless 이란 서버리스 클라우드 컴퓨팅 모델은 개발자의 생산성을 높이고 운영 비용을 절감할 수 있다. 실제로 서버가 존재하지 않는다기 보다는 개발자나 관리자가 서버인프라에 대해 신경쓰지 않아도 된다는 뜻이다.(장점 : 함수가 호출된 만큼만 비용이 청구, 비용절약, 인프라 관리 필요 없음 / 단점 : 각 함수에서 사용할 수 있는 자원이 제한됨, 벤더에 강한 의존성을 가짐, 로컬 데이터 사용 불가능)

cloud native ecosystem 이란 클라우드 네이티브 관련 오픈 소스들과 이를 설치 관리 운영하는 생태계를 의미

FaaS(Function as a Service) 서버리스 솔루션

Kubernetes Response Engine, Part 3: Falcosidekick + Knative | Falco

AWS  람다란 애플리케이션을 실행하기 위한 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스 이다. AWS 람다는 컨테이너를 지원하지 않지만, AWS에서는 람다와 별개로 컨테이너 기반의 서버리스 서비스 AWS 파게이트를 제공하고 있다. AWS 람다와 유사한 컴퓨팅 서비스로는 MS Azure Functions, GCP Cloud Functions, GCP Cloud Run, K8s Knatvie 등이 존재한다.

AWS 람다(AWS Lambda)란? | 44BITS

1. Kubeless

vmware-archive/kubeless: Kubernetes Native Serverless Framework (github.com)

Kubernetes Response Engine, Part 1: Falcosidekick + Kubeless | Falco

kubernetes-natvie serverless framework으로 아래 구성에 관계없이 사용가능

kubernetes의 auto-scaling, API routing, monitoring, troubleshooting등의 기능을 제공

 

2. OpenFaaS

Home | OpenFaaS - Serverless Functions Made Simple

OpenFaaS (github.com)

코드 없이 이벤트 기반 함수와 마이크로서비스를 배포할 수 있게 해주는 serverless 툴

오픈 소스 프레임워크, 어떤 언어로든 함수 작성 가능, Docker/OCI-format 컨테이너로 패키징 가능, 쉬운 사용(UI 제공, CLI, 원클릭 설치 제공), scale 조정

 

3. Knative (★ Prd 목표)

Knative(케이네이티브) 개념, 장단점, 구성요소, 사례 및 비교 (redhat.com)

Knative란? (basic) - 호롤리한 하루 (gruuuuu.github.io)

Knative 란 (tistory.com)

서버리스 오픈소스 - knative #1 소개 & Serving (tistory.com)

knative는 서버리스 클라우드 네이티브 애플리케이션을 배포, 실행, 관리하기 위해 쿠버네티스에 구성 요소를 추가하는 오픈소스.

기능 : knative는 서버 프로비저닝 및 관리 태스크를 제거한다.

 

---

구성요소 : 구축, 제공, 이벤트

knative는 knative serving과 knative eventing으로 구성된다. 

  • Knative Serving : serverless application이나 function들을 배포하고 서빙하는 역활 수행 프레임워크. 간단하게 웹서비스 컨테이너만 배포하면, 로드밸런서의 배치, 오토 스케일링, 복잡한 배포(롤링/카날리)등을 지원, 서비스 매쉬 솔루션인 Istio와 통합을 통해서 다양한 모니터링을 제공
    • Serverless 컨테이너의 빠른 배포
    • 자동 scale up & down(오토 스케일링)
    • Istio 기반 라우팅 & 네트워크 프로그래밍
    • 배포된 코드와 config의 스냅샷기능

---

    • Serving은 쿠버네티스 CRD(Custom Resource Definition)으로 정의된 4개의 오브젝트로 구성
      • Service : Configuration과 Route 리소스의 추상화된 집합체. 워크로드의 lifecycle을 관리하는 역활
      • Configuration : Serving으로 배포되는 서비스를 정의. 컨테이너 경로, 환경변수 등의 설정 정의
      • Revision : 코드와 config의 스냅샷
      • Route : User Service의 네트워크 엔드포인트를 제공. 하나 이상의 Revision을 가지며 서비스로 들어오는 트래픽을 Revision으로 라우팅할 수 있다.

 

  • Knative Eventing(Broker + Trigger)
    • 비동기 메시지 처리를 위한 모듈. 이벤트들을 Knative에 event source에 등록되고 해당 이벤트가 발생되면 지정된 knative 서비스로 이벤트 메시지를 전송하는 루틴으로 동작.
    • Broker : 이벤트 소스로부터 메시지를 받아 저장하는 버킷역활
    • Trigger : 특정 메시지 패턴만 서비스로 보낼 수 있게 하는 조건 역활
    • Subscriber : 이벤트를 수신하여 처리하는 객체

4. Tekton

Tekton이란? - 호롤리한 하루 (gruuuuu.github.io)

Getting Started | Tekton

Kubernetes Response Engine, Part 4: Falcosidekick + Tekton | Falco

 

Tekton : CI/CD 파이프라인을 빠르게 구축하기 위한 프레임워크를 제공하는 CN 오픈 소스

특징

  • 재사용 : 모든 task들은 다른 pipeline과 완전히 독립적으로 사용가능
  • 표준화 : Tekton은 K8s의 Custom Resource를 사용해 정의
  • 기능의 확장성 : Tekton Hub를 통해 Tekton 커뮤니티에서 제작한 여러 종류의 task 들을 사용가능
  •  step < task < pipeline

사용 처

Jenkins X의 pipeline으로 Tekton 사용, Openshift에서도 pipeline 서비스로 Tekton 추가

5. Argo

Kubernetes Response Engine, Part 5: Falcosidekick + Argo | Falco

컨테이너 기반 워크플로우 솔루션 Argo (tistory.com)

쿠버네티스 Argo workflow 소개 | 커피고래의 노트 (coffeewhale.com)

Argo

argo는 컨테이너 워크플로우 솔루션이다. 컨테이너 기반의 빅데이터 분석, CI/CD, 머신러닝 파이프라인을 만들때 유용하게 사용할 수 있는 오픈 소스 솔루션이다. argo의 경우는 워크플로우를 시작하면서 컨테이너를 배포하고, 워크플로우 작업이 끝나면 컨테이너가 종료되기 때문에, 실행할때만 컨테이너를 통해서 컴퓨팅 자원을 점유하기 때문에 자원 활용면에서 장점이 있다. (다른 것들은 컴포넌트가 이미 돌고 있음을 전제로 하고, 각각의 컴포넌트를 흐름에 따라서 호출하는데 목적이 맞추어져 있다) 또, 원하는 Job(컨테이너 단위) 을 실행할 수 있고 각 Job 간의 종속성을 부여하여 순서대로 실행할 수 있으며 병렬로 여러 Job을 동시에 실행할 수 있다. CRD(CustomResourceDefinition)을 정의하고 YAML 파일을 만들어 쿠버네티스에 호출한다.

 

---

 

Argo Events: Falcosidekick에서 이벤트를 받게 된다. 그리고 이를 knative의 broker와 유사한 bus에 넣게된다.

Argo Workflow: 특정 기준에 걸리는 event가 발생하면 event bus에서 해당 내용을 trigger 해온다.

 

장점

  • 컨테이너 단위이기 때문에 고립성/독립성이 좋다.
  • 하나의 역활을 맡는 Job을 단일하게 개발할 수 있기 때문에 재사용성을 무척 높일 수 있다

단점

  • Pod 생성, 삭제 비용이 크다.

6. Cloud Run & Cloud Functions

Kubernetes Response Engine, Part 6: Falcosidekick + Cloud Run | Falco

[GCP]Serverless 서비스인 Cloud Run 알아보기 1부 — Cloud Run 개요 | by 이정운 (Jungwoon Lee) | google-cloud-apac | Medium

Cloud Run : Falcosidekick을 위해 GCP환경에서 돌리는 KRE

Cloud Run은 컨테이너 기반으로 서비스를 제공한다. 컨테이너 환경으로 구동 가능한 어떤 것이든 서비스가 가능하다는 장점.

7. Cloud Functions

 

[구글 클라우드 플랫폼] GCP : Cloud Functions (tistory.com)

Kubernetes Response Engine, Part 7: Falcosidekick + Cloud Functions | Falco

Cloud Functions는 직접 코드를 올려서 서비스를 제공한다. 코드 제약이 생기지만 보다 다양한 GCP의 기능들을 제공한다.

 

9. 비교

오픈소스 소프트웨어장점(prons)단점(cons)오픈소스 소프트웨어장점(prons)단점(cons)
Kubeless
  • serverless의 가벼운 특징 포함
  • 단순하지만 핵심적인 기능들 포함
  • auto-scaling, API routing, monitoring, troubleshooting
  • 매우 적은 정보
  • 보다 복잡한 기능 설정 불가능
  • 각 함수에서 사용할 수 있는 자원이 제한됨
    • 계속 켜둬야 하는 웹소켓같은 경우 사용불가
  • 로컬 데이터 사용 불가능(stateless)
  • 현재 업데이트 종료
OpenFaas
  • serverless의 가벼운 특징 포함
  • 어떤 언어로든 함수 작성 가능
  • Docker/OCI-format 컨테이너로 패키징 가능
  • 쉬운 사용(UI 제공, CLI, 원클릭 설치 제공)
  • scale 조정 가능
  • 매우 적은 정보
  • 보다 복잡한 기능 설정 불가능
  • 각 함수에서 사용할 수 있는 자원이 제한됨
    • 계속 켜둬야 하는 웹소켓같은 경우 사용불가
  • 로컬 데이터 사용 불가능(stateless)
Knatvie
  • Serverless 컨테이너의 빠른 배포
  • 자동 scale up & down(오토 스케일링)
  • Istio 기반 라우팅 & 네트워크 프로그래밍
  • 배포된 코드와 config의 스냅샷기능
  • knative serving과 knative eventing으로 나누어져 효율적인 event 관리 및 처리
  • CNCF 에 등록된 소프트웨어
  • 재사용성이 떨어짐
Tekton
  • 재사용 : 모든 task들은 다른 pipeline과 완전히 독립적으로 사용가능
  • 표준화 : Tekton은 K8s의 Custom Resource를 사용해 정의
  • 기능의 확장성 : Tekton Hub를 통해 Tekton 커뮤니티에서 제작한 여러 종류의 task 들을 사용가능
  • Self-Healing : 서버에 장애가 났을 경우 동적으로 회복 가능
  • Auto Scaling :서버의 사용량에 따라 서버의 크기를 동적으로 조절 가능
  • 러닝 커브가 높고 관련 정보가 많이 없음
  • 쿠버네티스 내부에서만 동작 가능
  • Github, Docker Hub 등 외부 서비스에 접근하기 위해서는 자격증명 설정이 필요
Argo
  • CNCF 에 등록된 소프트웨어
  • 컨테이너 단위이기 때문에 고립성/독립성이 좋다.
  • 하나의 역활을 맡는 Job을 단일하게 개발할 수 있기 때문에 재사용성을 무척 높일 수 있다
  • Pod 생성, 삭제 비용이 크다.
Cloud Run
  • 컨테이너 환경으로 구동 가능한 어떤 것이든 서비스가 가능하다는 장점
  • GCP에 등록되어 있기 때문에 단독 사용 불가능
Cloud Functions
  • 코드 제약이 생기지만 보다 다양한 GCP의 기능들을 제공한다
  • GCP에 등록되어 있기 때문에 단독 사용 불가능
728x90

'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글

Google Cloud Study Jam 신청과 학습방법 알아보기  (0) 2022.09.20
ss 2일차  (0) 2022.07.25
ss 1일차  (0) 2022.07.21
클라우드 76일차  (0) 2022.05.17
클라우드 75일차  (0) 2022.05.16