Browse by Tags

We've categorized the glossary terms. Use the filters to browse terms by tag.

가상 머신 (Virtual Machine)

개념 가상 머신(VM, virtual machine)은 특정 하드웨어에 구속(종속)되지 않는 컴퓨터 및 해당 운영 체제(operating system)이다. VM은 가상화(virtualization)를 필요로 하는데 이는 단일 물리 컴퓨터를 여러 대의 가상 컴퓨터로 분할하기 위함이다. 이러한 분할을 통해 조직(organization)과 인프라스트럭처 제공자(infrastructure provider)는 하드웨어에 영향을 주지 않고 VM을 쉽게 생성 및 삭제할 수 있다. 다루는 문제 가상 머신은 가상화를 활용한다. 베어 메탈(bare metal) 머신이 단일 운영 체제에 구속(종속)되면 머신의 자원을 효율적으로 활용하는데 다소 제약이 있다. 또한, 운영 체제가 단일 물리 머신에 구속(종속)되는 경우, 운영 체제의 이용 가능성은 해당 하드웨어에 직결된다...

기여 방법

클라우드 네이티브 용어집 콘텐츠는 이 GitHub 저장소에 저장되어 있으며, 용어집에 관련된 이슈, PR, 디스커션 목록을 확인할 수 있다. 클라우드 네이티브 용어집에 기여할 수 있는 방법에는 다음의 4가지가 있다. 열려 있는 이슈에 대해 작업하기 새로운 용어 제안하기 기존 용어 수정하기 용어집 번역에 참여하기 Glossary 커뮤니티에 들어오세요! 정기적으로 기여하고 싶다면, 용어집 워킹 그룹(Glossary Working Group) 월간 미팅에 참여할 수 있다. CNCF 캘린더에서 미팅 상세 정보를 확인할 수 있다. 또한 CNCF 슬랙의 #glossary 채널에서 메인테이너 및 기여자들과 소통할 수 있다...

기여자 계층

<p>안녕하세요! 👋 CNCF 클라우드 네이티브 용어집(Cloud Native Glossary) 프로젝트에 관심을 가져주셔서 감사합니다. 새로운 용어를 정의하거나, 용어집을 모국어로 현지화하는 데 도움을 주거나, 다른 사람이 시작하는 데 도움을 주는 것과 같이, 본 커뮤니티의 활동적인 멤버가 될 수 있는 다양한 방법이 있습니다. 이 문서는 프로젝트을 위한 다양한 기여자 역할과 그에 따른 책임 및 권한에 대해 설명합니다.</p> <ol> <li>기여자(Contributors) 용어집은 모두를 위한 것이다. 프로젝트에 기여하는 것만으로도 누구나 용어집 기여자(Glossary contributor)가 될 수 있다. 모든 기여자는 CNCF 행동 강령을 따라야 한다.</li> </ol>..

데브옵스 (DevOps)

개념 DevOps(데브옵스)는 각 팀이 애플리케이션 개발(development)부터 프로덕션 운영(operations)에 이르는 전체 프로세스를 소유하는 방법론이다. 이는 일련의 기술 구현을 넘어 문화와 프로세스의 완전한 변화를 요구한다. DevOps는 (전체 기능에 비해 상대적으로) 작은 구성 요소에 대해 작업하는 엔지니어 그룹들을 필요로 하며, 이를 통해 일반적인 오류 원인 중 하나인 전달/이관(Handoff)을 줄일 수 있게 한다. 다루는 문제 전통적으로, 긴밀하게 연결된 모놀리식 앱을 관리하는 복잡한 조직에서의 업무는, 일반적으로 여러 그룹 사이에서 파편화(fragmented)되었다. 이로 인해 수많은 핸드오프와 긴 리드 타임(lead time)이 발생했다...

디버깅 (Debugging)

개념 디버깅(debugging)은 원하는 결과를 얻기 위해 컴퓨터 프로그램, 소프트웨어 혹은 시스템에서 버그(또는 오류)를 찾고 해결하는 과정 또는 활동이다. 버그는 잘못되거나 예기치 않는 결과를 초래하는 결함 또는 문제이다. 다루는 문제 소프트웨어 개발은 복잡한 활동으로 버그 없이 코드를 작성하는 것은 거의 불가능하다. 이러한 버그는 코드가 실행되었을 때, 코드가 원하는대로 동작하지 않도록(정의되지 않은 동작을 하도록) 만들 것이다. 애플리케이션이 얼마나 중요한지에 따라, 버그는 재정적 또는 심지어 인명에 심각한 부정적인 영향을 미칠 수 있다. 일반적으로, 애플리케이션 코드는 다양한 단계나 환경에서 테스트를 거쳐야 한다...

마이크로서비스 (Microservices)

개념 마이크로서비스(microservices)는 애플리케이션 개발에 대한 근래의 접근 방법으로 클라우드 네이티브(cloud native) 기술을 활용한다. 넷플릭스(Netflix)와 같은 최신의 애플리케이션들은 단일 앱처럼 보이지만, 실제로는 모두 긴밀하게 동작하는 작은 서비스들의 모음이다. 예를 들어, 영상에 접속하고, 검색하며, 미리보기 할 수 있는 단일 페이지는 각 기능을 처리하는 더욱 작은 단위의 서비스들(예, 브라우저상에서 검색, 인증 및 미리보기 실행)에 의해 구동될 수 있다. 간단히 말해서, 마이크로서비스는 모놀리식 애플리케이션(monolithic applications)에 대조되는 애플리케이션 아키텍처 패턴을 나타낸다. 다루는 문제 마이크로서비스는 모놀리식 애플리케이션에서 제기된 도전과제(challenges)에 대한 대응안(response)이다...

멱등성 (Idempotence)

수학이나 컴퓨터 분야에서는 멱등성/멱등법칙(idempotence)을 얼마나 많이 실행하든 항상 같은 결과가 나오는 작업(operation)이라 설명한다. 매개변수가 동일하다면, 멱등성 작업은 호출하는 응용 프로그램에 영향을 주지 않는다...

모놀리식 앱 (Monolithic Apps)

개념 모놀리식 애플리케이션(monolithic application)은 단독으로 배포 가능한 프로그램에 모든 기능을 포함한다. 이것은 보통 애플리케이션을 만들 때 선택할 수 있는, 가장 간단한 시작 형태라 할 수 있다. 그러나, 애플리케이션의 복잡성이 올라가는 경우, 모놀리스(monoliths)의 유지 및 관리가 더욱 어려워질 수 있다. 동일한 코드베이스(codebase)에서 작업하는 개발자가 많아질수록, 변경 사항의 충돌 가능성과 개발자 간의 대인 커뮤니케이션의 필요성이 증가한다. 다루는 문제 애플리케이션을 마이크로서비스(microservices)로 전환하면 운영 오버헤드가 증가한다. 덧붙여 말하면, 테스트, 배포 및 지속 실행해야 하는 보다 많은 항목이 존재하게 된다...

분산 애플리케이션 (Distributed Apps)

개념 분산 애플리케이션은 그 기능을 여러 개의 독립적이고 작은 부분들로 나누어 동작하는 애플리케이션이다. 분산 애플리케이션들은 폭넓게 바라본 애플리케이션의 범주 내에서 서로 다른 문제를 처리하는 개별 마이크로서비스 컴포넌트들로 구성된다. 클라우드 네이티브 환경에서는 개별 컴포넌트들이 일반적으로 클러스터에서 컨테이너로 실행된다. 다루는 문제 단일 컴퓨터에서 실행 중인 애플리케이션은 곧 단일 장애 지점(Single Point Of Failure)을 나타낸다. 이는 해당 컴퓨터에 장애가 발생할 경우 애플리케이션 역시 사용할 수 없게 된다는 의미이다. 분산 애플리케이션은 종종 모놀리식 애플리케이션과 대조되는데, 모놀리식 애플리케이션은 다양한 컴포넌트들의 규모를 독립적으로 조절할 수 없기 때문에, 유연하게 규모를 조절(scale)하는 것이 매우 어렵다...

서비스 (Service)

IT에서 서비스는 다양한 의미를 가진다는 점에 유의해야 한다. 이 정의에서는, 마이크로서비스(microservice)에서의 서비스와 같이 좀 더 전통적인 서비스에 초점을 둔다. 서비스가 마이크로서비스와 어떻게 다른지에 대해서는 미묘한 차이가 있으며, 사람마다 의견이 다를 수 있다. 그렇지만, 여기서는 서비스를 포괄적인 상위(high-level) 개념으로 정의하여, 서비스와 마이크로서비스를 동일하게 취급할 것이다. 마이크로서비스를 참조하길 바란다...

서비스 디스커버리 (Service Discovery)

개념 서비스 디스커버리(service discovery)는 서비스를 구성하는 개별 인스턴스를 찾는 프로세스이다. 서비스 디스커버리 도구는 서비스를 구성하는 다양한 노드 또는 엔드포인트를 지속적으로 추적한다. 다루는 문제 클라우드 네이티브 아키텍처(cloud native architecture)는 동적이고 유동적이며, 이는 지속적으로 변화하고 있음을 의미한다. 컨테이너화된 앱은 수명(lifetime) 동안 여러 번 시작되고 중지될 수 있다. 그럴 때마다, 앱(app)에 새로운 주소가 부여될 수 있으므로 이를 찾으려는 다른 앱에게는 새로운 위치 정보를 제공하는 도구가 필요하다. 문제 해결 방식 서비스 디스커버리는 네트워크 내의 앱에 대한 추적을 지속하여 필요시 서로를 찾을 수 있다...

서비스 메시 (Service Mesh)

개념 마이크로서비스 세계에서, 앱은 네트워크를 통해 통신하는 여러 개의 작은 서비스로 나뉜다. Wi-Fi 네트워크와 마찬가지로 컴퓨터 네트워크는 본질적으로 신뢰할 수 없고, 해킹될 수 있으며, 종종 느려지기도 한다. 서비스 메시는 서비스 간의 트래픽(즉, 통신)을 관리하고 모든 서비스에 걸쳐 균일하게 안정성(reliability), 관찰 가능성(observability) 및 보안 기능을 추가함으로써 이러한 새로운 문제들을 해결한다. 다루는 문제 마이크로서비스 아키텍처로 전환한 엔지니어들은 이제 수백에서 심지어는 수천 개의 개별 서비스를 처리하고 있으며, 이들은 모두 통신을 필요로 한다. 이는 곧 많은 트래픽이 네트워크를 통해 송수신되는 것을 의미한다...

스타일 가이드

이 스타일 가이드는 용어집의 독자, 용어 정의 형태, 요구되는 설명의 수준 및 일관된 스타일을 유지하는 방법을 이해하는 데 도움을 줄 것이다. 클라우드 네이티브 용어집은 CNCF 저장소의 기본 스타일 가이드를 따른다. 추가적으로, 다음 규칙도 적용된다. 간단하고 이해하기 쉬운 언어를 사용하고, 전문 용어와 유행어는 피한다. 구어체는 사용하지 않는다. 정확하고 구체적인 언어를 사용한다. 축약형은 사용하지 않는다. 수동태 사용을 줄인다. 긍정 형태의 문장을 사용하도록 노력한다. 인용문 외에는 느낌표를 사용하지 않는다. 과장하지 않는다. 반복 표현을 피한다...

오토스케일링 (Autoscaling)

오토스케일링(Autoscaling)은 일반적으로 컴퓨팅 리소스 측면에서 시스템이 자동으로 규모를 조절(scale)하는 기능(ability)이다. 오토스케일링 시스템을 사용하면, 리소스가 필요할 때 자동으로 추가되고 변화를 거듭하는 사용자 요구에 맞게 규모를 조절할 수 있다. 오토스케일링 프로세스는 다양하며 메모리 또는 처리 시간과 같은 다른 메트릭을 기반으로 규모를 조절하도록 설정할 수 있다. 관리형 클라우드 서비스에는 일반적으로 오토스케일링 기능(functionality)이 관계되어 있는데 이는 대부분의 온프레미스(on-premises) 배포보다 더 많은 옵션과 구현을 제공하기 때문이다. 이전에는 인프라와 애플리케이션이 시스템의 최대 사용치(peak usage)를 고려하도록 설계하였다. 이 아키텍처에서는 많은 리소스가 충분히 활용되지 못하고 변화하는 소비자 수요에 탄력적이지 않음이 드러났다...

추상화 (Abstraction)

컴퓨팅 관점에서 추상화는 서비스의 소비자(컴퓨터 프로그램이나 사람을 의미)에게서 세부 사항을 숨기는 것을 의미하는 표현으로, 시스템을 보다 쉽고 일반적인 개념(generic)으로 이해할 수 있게 돕는다. 노트북의 운영체제(OS)를 좋은 예시로 볼 수 있다. 운영체제는 추상화를 통해 컴퓨터가 동작하는 방식에 대한 세부 사항이 드러나지 않게 한다. 따라서 사용자는 CPU, 메모리, 그리고 프로그램이 처리되는 세부 방식에 대해서 인지할 필요가 없다. 사용자는 OS만 사용하면 되고 나머지 세부 사항은 OS가 처리한다. 이러한 모든 세부 사항은 OS의 “커튼(curtain)”, 즉 추상화 뒤에 숨겨진다...

컨테이너 (Containers)

개념 컨테이너(container)는 컴퓨터 운영 체제를 통해 관리되며 리소스 및 기능에 제약을 가지는 구동 프로세스(running process)이다. 컨테이너 프로세스에서 사용할 수 있는 파일은 컨테이너 이미지로 패키징된다. 동일한 머신(machine)에서 컨테이너들은 서로 인접한 형태로 실행되지만, 일반적으로 운영 체제는 개별 컨테이너 프로세스들이 서로 상호 작용하는 것을 방지한다. 다루는 문제 컨테이너를 사용하기 전에는, 각 애플리케이션을 실행하기 위한 개별 머신이 필요했다. 이 경우 각 머신은 자체 운영 체제(CPU, 메모리 및 디스크 공간을 차지)가 필요하고, 주로 대부분의 자원들이 개별 애플리케이션을 구동하기 위해 사용된다...

컨테이너화 (Containerization)

개념 컨테이너화(containerization)는 애플리케이션과 그 의존 요소들을 컨테이너 이미지 형태로 포장하는 것(bundling)을 의미한다. 컨테이너 빌드 프로세스는 OCI(Open Container Initiative) 표준을 준수해야 한다. 컨테이너화의 결과물이 이 표준을 준수하는 컨테이너 이미지이기만 한다면, 어떠한 컨테이너화 도구라도 사용할 수 있다. 다루는 문제 컨테이너가 보편화되기 전에는, 단일 베어메탈 머신 상에 여러 애플리케이션을 오케스트레이션(orchestration) 하기 위해 가상 머신(VM)에 의존했다. VM은 컨테이너보다 훨씬 크며 이를 실행하기 위해 하이퍼바이저(hypervisor)를 필요로 한다. 상대적으로 크기가 큰 VM 템플릿(template)을 저장, 백업, 전송해야 하기 때문에, VM 템플릿을 생성하는 속도 또한 느리다...

코드형 인프라 (IaC)

개념 코드형 인프라(IaC, Infrastructure as code)는 인프라의 정의를 하나 이상의 파일로 저장하는 방식(practice)이다. 이는 일반적으로 쉘 스크립트 또는 기타 설정(configuration) 도구를 통해 서비스형 인프라(IaaS, infrastructure as a service)를 수동으로 프로비저닝하던 기존 모델을 대체한다. 다루는 문제 클라우드 네이티브 방식으로 애플리케이션을 구축하려면 사용 후 처분(disposable) 및 재현(reproducible)할 수 있는 인프라를 필요로 한다. 또한 가급적 사람의 개입이 없는 자동화 및 반복적인 방식으로 수요/요구에 따라 규모를 조절(scale)하는 것도 필요하다. 수동 프로비저닝은 클라우드 네이티브 애플리케이션의 응답성 및 확장성 요구사항을 충족할 수 없다...

클라우드 네이티브 기술 (Cloud Native Technology)

개념 클라우드 네이티브 스택(the cloud native stack)이라고도 하는 클라우드 네이티브 기술은 클라우드 네이티브 애플리케이션을 구축하는 데 사용되는 기술이다. 조직이 퍼블릭, 프라이빗 및 하이브리드 클라우드와 같은 현대적이고 역동적인 환경에서 확장 가능한 애플리케이션을 구축 및 실행할 수 있도록 함으로써, ‘클라우드의 약속(promise of the cloud)‘을 지키고 클라우드 컴퓨팅 이점을 최대한 활용하게 한다. 이 기술은 클라우드 컴퓨팅 및 컨테이너, 서비스 메시(mesh), 마이크로서비스(microservices), 이뮤터블 인프라(immutable infrastructure)의 특징 및 기능(capabilities)을 활용하도록 처음부터 설계되었다. 다루는 문제 클라우드 네이티브 스택에는 다양한 기술 범주를 포함하며 다양한 문제를 해결한다...

클라우드 네이티브 앱 (Cloud Native Apps)

개념 클라우드 네이티브 애플리케이션은 클라우드 컴퓨팅의 혁신을 활용하도록 특화 설계되었다. 이러한 애플리케이션은 각각의 클라우드 아키텍처와 쉽게 통합되며, 클라우드의 리소스와 확장 기능을 활용한다. 또한 클라우드 네이티브 애플리케이션은 클라우드 컴퓨팅 기반 인프라의 혁신을 활용하는 애플리케이션을 의미한다. 오늘날 클라우드 네이티브 애플리케이션은 클라우드 공급자의 데이터센터에서 실행되는 앱과 온프레미스(on-premises) 클라우드 네이티브 플랫폼에서 실행되는 앱을 포함한다. 다루는 문제 전통적으로, 온프레미스 환경은 상당한 맞춤형 방식으로 컴퓨팅 리소스를 제공했다. 각 데이터센터는 애플리케이션이 특정 환경에 강결합(tightly coupled)된 형태의 서비스를 실행하고 있었으며, 가상 머신 및 서비스와 같은 인프라에 대한 수동 프로비저닝에 크게 의존하는 경우가 많았다...

클라우드 네이티브 용어집

클라우드 네이티브 용어집 클라우드 네이티브 용어집(Cloud Native Glossary)은 CNCF 비지니스 벨류 서브커미티(BVS, Business Value Subcommittee)가 주도하는 프로젝트다. 이 프로젝트의 목적은 사전 기술 지식이 없이도 명확하고 간단한 언어로 클라우드 네이티브 개념을 설명하는 것이다. 기여하기 네이티브 용어집에 대한 변경, 추가 및 개선은 모든 사람에게 열려있다. 우리는 이 공유된 어휘(lexicon)를 개발 및 개선하기 위해서 CNCF가 관리하는 커뮤니티-주도 프로세스를 사용한다. 이 용어집은 클라우드 네이티브 기술들에 대한 공유 어휘를 관리하기 위해서 벤더-중립적 플랫폼을 제공한다. 본 프로젝트의 목적과 헌장(charter)을 준수하는 모든 참여자의 기여를 환영한다...

클라우드 컴퓨팅 (Cloud Computing)

개념 클라우드 컴퓨팅은 인터넷을 통해 CPU, 네트워크, 디스크와 같은 컴퓨팅 리소스를 온디맨드(on-demand)로 제공하는 모델이다. 클라우드 컴퓨팅은 사용자가 물리적으로 원격에 위치한 컴퓨팅 파워(power)에 접속 및 사용할 수 있게 기능을 제공한다. AWS, GCP, Azure, DigitalOcean 등 다양한 클라우드 제공자들은 제 3자에게 지리적으로 다양한 위치에 있는 컴퓨팅 리소스에 대한 액세스(access) 권한을 임대할 수 있도록 기능을 제공한다. 다루는 문제 전통적으로 조직들은 컴퓨팅 파워에 대한 사용을 확장하려고 할 때 두 가지 주요 문제에 직면했다. 그들은 물리적 서버와 네트워크를 호스팅 하기 위한 시설에 대한 구입, 지원, 설계, 비용 지불 단계를 거치거나 해당 시설들을 확장 및 관리하게 된다...

클러스터 (Cluster)

개념 클러스터(cluster)는 공통의 목표를 위해 작동하는 컴퓨터 또는 애플리케이션들의 그룹이다. 클라우드 네이티브 컴퓨팅의 관점에서, 이 용어는 쿠버네티스에 가장 일반적으로 적용된다. 쿠버네티스 클러스터는 컨테이너를 통해 실행되는 서비스(또는 워크로드) 집합이며, 이는 보통 서로 다른 머신(machines)에서 구동된다. 네트워크를 통해 연결된 모든 컨테이너화 (containerized)된 서비스의 모음(collection)은 클러스터를 나타낸다. 다루는 문제 단일 컴퓨터에서 실행되는 소프트웨어는 단일 장애점(single point of failure)를 가지며 (컴퓨터가 고장(crashes) 나거나 또는 누군가 뜻하지 않게 전원 케이블을 뽑은 경우), 이런 경우 일부 중요 비지니스(business-critical) 시스템이 오프라인 상태가 될 수 있다...

확장성 (Scalability)

확장성(scalability)은 시스템의 규모를 얼마나 유연하게 조절할 수 있는지를 나타낸다. 이는 시스템이 해야 하는 모든 일들에 대한 수행 능력을 증가시킨다. 예를 들어, 쿠버네티스 클러스터는 컨테이너화된 애플리케이션의 수를 늘리거나 줄임으로써 규모를 조절(scale)한다. 하지만 이러한 쿠버네티스에서의 확장성은 클러스터가 얼마나 많은 노드들로 구성되어 있는지, 각 노드가 얼마나 많은 컨테이너를 처리할 수 있는지, 컨트롤 플레인(control plane)이 얼마나 많은 연산(operations)이나 기록(records)을 지원하는지 등의 여러가지 요인들에 따라 달라진다. 확장성 있는 시스템에서는 부하 처리를 위한 역량(capacity)을 쉽게 향상시킬 수 있다...