Knative Autoscaling 연구하기안녕하세요. 이전 포스팅에서 Serving과 Eventing 그리고 Auto Scaling에 대해서 알아보았습니다. Knative의 Auto Scaling은 기존의 Metric, Event 방식의 Autoscaler들과는 달리 KPA(Knative Pod Autoscaler)에 의해 Concurrency 즉, Request 수에 따라 Autoscaling이 이루어지게 됩니다. 따라서 이번 포스팅에서는 Knative에서 Auto Scaling이 내부적으로 어떻게 동작하고 어떻게 구현되어있는지 그리고 어떠한 수식과 로직에 따라계산되는지 등에 대해 코드레벨에서 분석한 내용을 말씀드리고자합니다. * 코드의 내용이 방대하여 전체 코드를 세세하게 보진 못하여 틀린 부..
Knative Eventing 연구하기안녕하세요. 이전 포스팅에서 Serving과 Auto Scaling에 대해서 알아보았습니다. Knative는 서버리스 서비스의 라이프사이클 뿐만아니라 서비스로 전달되는 다양한 이벤트를 관리하거나 혹은 이벤트를 직접 생성할 수있는 기능을 제공하고 있습니다. 따라서 이번 포스팅에서는 Eventing에 속해 있는 개념들과 이러한 Eventing들이 제공하는 다양한 기능들에 대해서 설명드리겠습니다. Knative Eventing서버리스 서비스들을 개발하는 개발자들은 이벤트를 기반으로하여 다양한 서비스들을 개발할 수 있습니다. Knative Eventing에서는 특히 이벤트를 생성하는 이벤트 생성자와 이벤트를 수신하는 이벤트 컨슈머등의 개념을 기반으로 기능을 제공하고 있..
Knative 연구하기안녕하세요. 최근 개인적으로 Serverless 분야를 흥미있게 연구하고 있는데 이전에 포스팅 했던 Faas(Function as a Service) 프로젝트인 OpenFaaS와 더불어 Kubernetes 인프라 상에서 동작하는 Serverless 프로젝트인 Knative에 정리하고자 합니다. Knative는 2018년 7월 구글에서 발표한 오픈소스 프로젝트로 Knative를 사용하면 컨테이너 기반의 어플리케이션을 쉽게 개발하고 배포하며 또 관리 할 수있게 됩니다. 그림 1과 같이 Knative를 통해 개발자들은 서버 관리 등에 대해서 고려할 필요없이 오로지 어플리케이션 개발 및 배포에만 신경쓸 수 있게 되며, 사용자 역시 API를 통해 어플리케이션이 제공하는 기능을 사용할 수 있..
Knative AutoScaling 연구하기안녕하세요. 이전 포스팅에서 Serving에 대해서 알아보았습니다. 서버리스 서비스들은 일정 시간 동안 요청이 없으면 Pod가 제거 되고, 요청이 오면 Pod를 생성하게 됩니다. 이러한 기능을 Knative에서는 Auto Scaling이라고 부르며, 이번 포스팅에서는 Auto Scaling을 위한 각각의 컴포넌트들과 순차적인 워크플로우에 대해서 살펴보도록 하겠습니다. Knative Auto Scaling서버리스 서비스가 Pod로 생성되게 되면, 자동적으로 Queue Proxy가 포함되게 됩니다. 해당 컨테이너는 서비스 컨테이너의 요청을 파악하고, 요청이 없다면 다른 컴포넌트에 이를 알려주게 됩니다. Queue Proxy는 서비스 컨테이너와 함께 사이드카 형태..
Faas란? 안녕하세요. 이번 포스팅에서는 Faas와 서버리스에 대해 간략하게 설명드리고자 합니다. 크게 어려운 개념은 없지만 개인적으로 흥미있는 분야라고 생각되어 한 번 정리해 보았습니다. FaaS는 Function as a Server의 약자로 말 그대로 "함수를 서비스로 제공한다"라는 의미입니다. 여기서 함수가 뜻하는 바는 프로그래밍 수준에서 Function 혹은 메소드등을 의미합니다. 사용자는 Rest API와 같은 HTTP 요청을 통해 함수를 호출하고 원하는 파라미터를 전달하여 함수가 리턴 값이 있다면 리턴 값을 받거나 혹은 함수의 동작 시작 이벤트를 발생시킬 수 있습니다. 서버리스 컴퓨팅은 이러한 FaaS를 기반으로 새로운 인프라 서비스를 제공하는 것입니다. 서버리스 컴퓨팅은 특정 기능을 수..
Kubernetes 환경에서 OpenFaaS 설치 및 연구안녕하세요. 이번 포스팅에서는 Kubernetes 환경에서 OpenFaaS의 구조에 대해 알아보고, 설치를 통해 어떻게 서비스를 제공하는지 연구해보도록 하겠습니다. OpenFaaS 연구에 들어가기 앞서 먼저 Faas의 개념부터 간단하게 설명드리겠습니다. Faas는 Function as a service의 약자로 함수 자체를 서비스로 제공하는 것을 의미합니다. 인프라의 관점에서는 가상머신 -> 컨테이너 -> 함수의 순서로 진화하는 것으로 Faas를 이야기 하는 경우도 있고, 어플리케이션 개발 관점에서는 기존 모놀리틱 구조에서 마이크로서비스 구조, Faas 기반 구조로 진화한다고 보는 경우도 있습니다. 따라서 Faas는 클라우드 위에서 하나의 어플리..