에이전트 풀이란 뭘까? 

 

에이전트 풀은 마이크로소프트의 Azure DevOps에서 사용되는 공간이다.

이해하기 쉽게 설명하면, 이 공간에는 작업을 수행하는 작은 개체들이 있고 이 작은 개체들을 '에이전트'라고 부른다.

 

에이전트 풀은 누군가 자체적으로 만들어야 하는 것이 아니라 마이크로소프트에서 미리 만들어 놓은 공간이다. 이곳에는 다양한 종류의 작업을 할 수 있는 여러 기능이 준비되어 있다. 

 

그런데 가끔은 마이크로소프트에서 만들어 놓은 에이전트가 아니라, 우리가 직접 만든 커스텀 에이전트를 사용하고 싶을 때가 있을 것이다. 이때 에이전트 풀을 만들고, 그 안에 커스터마이징 한 에이전트를 넣어둘 수 있다. 이렇게 만든 풀을 '자체 호스팅 에이전트 풀'이라고 부르고, 그 안에 들어가 있는 개체를 '자체 호스팅 에이전트'라고 부른다.

 

 

에이전트 풀이 왜 필요할까?

 

당신이 레고 블록으로 무언가를 만든다고 상상해봐라. 에이전트 풀은 그 레고 블록을 담아두는 상자이다. 상자 안에는 여러 종류의 블록이 있어서 필요할 때마다 쉽게 가져와서 사용할 수 있다. 때로는 커스터마이징 된 블록도 상자에 담아두고 싶을 때가 있을 것이다. 에이전트 풀을 사용하면 그런 작업을 할 수 있게 한다.

 

말을 반복해서 다시 한번 요약해보면, 에이전트 풀은 작업을 처리하는 개체들을 담아두는 특별한 공간이다. 에이전트 풀을 사용하면 작업을 효율적으로 처리할 있고, 필요할 때마다 필요한 개체만을 사용할 있다.

 

에이전트 풀에는 2 type 이 있는데 무료로 사용할 수 있는 Microsoft 호스팅 풀이 있으며(일부 제한이 존재하기는 함), 또는 자체 호스팅된 에이전트를 만들어 자체 호스팅 풀에 연결할 수 있다.

 

  • Azure Pipelines: 기본 Microsoft 호스팅 풀로서 다양한 Ubuntu, MacOS 및 Windows Server 에이전트를 사용한다.
  • Default: 자체 호스팅된 에이전트를 연결 방식을 의미한다.

 

그래서 에이전트가 뭘 하는데?

 

1. 작업 실행 

에이전트의 주된 역할은 빌드 또는 릴리스 파이프라인에서 정의된 작업을 실행하는 것이다. 코드를 컴파일하거나 테스트를 실행하고 응용 프로그램을 배포하는 등의 개별 단계나 동작을 의미한다.

 

2. 환경 설정

에이전트는 작업에 필요한 런타임 환경을 설정한다. 이는 종속성을 설치하고 설정을 구성하며 파이프라인에서 정의된 특정 작업을 실행하기 위한 환경을 준비하는 것을 의미한다.


3. 아티팩트 검색 및 게시

에이전트는 빌드 프로세스에서 필요한 소스 코드 및 기타 종속성을 검색한다. 성공적인 빌드 후, 에이전트는 아티팩트(컴파일된 이진 파일, 패키지)를 Azure DevOps에 게시하여 이후의 작업이나 단계에서 사용할 수 있도록 한다.


4. 테스트 실행

빌드 파이프라인의 맥락에서, 에이전트는 주로 코드의 품질을 보장하기 위해 테스트를 실행한다. 이는 단위 테스트, 통합 테스트 또는 프로젝트에서 정의된 기타 테스트를 포함하는 의미이다.


5. 배포

릴리스 파이프라인에서 에이전트는 응용 프로그램이나 서비스를 다양한 환경(스테이징, 프로덕션 등)에 배포하는 데 중요한 역할을 한다. 에이전트는 배포 작업을 실행하고 구성을 관리하며 응용 프로그램이 올바르게 배포되도록 보장한다.


6. Azure DevOps 서비스와의 통신

에이전트는 지시를 얻고 진행 상황을 보고하며 업데이트를 받기 위해 Azure DevOps 서비스와 통신한다. 에이전트는 안전하고 신뢰성 있는 상호 작용을 위해 안전한 연결을 사용하며 개인 액세스 토큰(PAT)을 사용하여 인증한다.


7. 병렬 실행

에이전트는 병렬 실행을 지원하여 여러 작업이 동시에 실행될 수 있도록 한다. 이는 대규모 프로젝트에서 특히 효율성을 높이는 데 도움이 된다.

 

8. 로그 및 보고

에이전트는 작업 및 작업 실행 중에 로그를 생성한다. 이 로그는 각 단계에 대한 자세한 정보를 제공하며 문제 해결이나 파이프라인의 진행 상황을 이해하는 데 도움이 된다. 


요약하면, 에이전트는 Azure DevOps 파이프라인에서 정의된 지시를 따라 수행하는 다재다능한 작업자로 볼 수 있다. 환경 설정, 작업 실행, 테스트 실행, 응용 프로그램 배포 및 Azure DevOps 서비스와의 통신 등을 담당하여 원활하고 자동화된 DevOps 프로세스를 수행해준다.

+ Recent posts