# Orchestrion: Go 애플리케이션을 위한 컴파일 타임 자동 계측 도구

> Clean Markdown view of GeekNews topic #18203. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18203](https://news.hada.io/topic?id=18203)
- GeekNews Markdown: [https://news.hada.io/topic/18203.md](https://news.hada.io/topic/18203.md)
- Type: news
- Author: [lemonmint](https://news.hada.io/@lemonmint)
- Published: 2024-12-11T10:01:16+09:00
- Updated: 2024-12-11T10:01:16+09:00
- Original source: [datadoghq.com](https://www.datadoghq.com/blog/go-instrumentation-orchestrion/)
- Points: 5
- Comments: 0

## Topic Body

- Datadog에서 개발한 Go 애플리케이션을 위한 안전하고 신뢰할 수 있는 자동 계측 도구  
- 컴파일 타임에 계측을 삽입하여 런타임 오버헤드를 최소화  
- RASP 기능을 통해 애플리케이션을 보호  
- 컴파일 과정에서 소스 코드를 수정하여 Datadog APM 추적을 위한 계측을 자동으로 삽입  
- Datadog Application Security Management Exploit Prevention 기능을 통해 일반적인 취약점으로부터 애플리케이션을 보호  
  
#### 작동 방식  
  
- Go 툴체인과 연동하여 컴파일 과정 중에 소스 코드를 분석하고 수정합니다.  
- Abstract Syntax Tree(AST) 레벨에서 코드를 조작하여 Go 컴파일러가 모든 변경 사항을 검증하고 타입 검사를 수행하도록 합니다.  
- 애플리케이션의 모든 동작에 대한 무제한적인 접근을 허용하면서 컴파일된 바이너리를 직접 수정하여 발생할 수 있는 오류를 방지합니다.  
- Go 컴파일러의 최적화 과정을 거쳐 수정된 코드가 최적화되어 런타임 오버헤드를 줄입니다.  
- 수정된 소스 코드에 Go `//line` pragma 지시문을 삽입하여 수정으로 인해 라인 번호가 영향을 받지 않도록 하고 계측된 애플리케이션에서 생성된 스택 추적이 원본 소스 코드의 올바른 위치를 가리키도록 합니다.  
  
#### 컴파일 타임 계측을 사용하는 이유  
  
- **안전성, 신뢰성, 데이터 품질**: 컴파일 타임 계측은 바이너리 패칭이나 eBPF보다 안전하고 신뢰할 수 있는 데이터를 생성합니다.  
- **자동화**: 바이너리 패칭 및 eBPF는 높은 수준의 자동화를 제공하지만 Orchestrion은 빌드 프로세스 변경 및 애플리케이션 재배포가 필요합니다.  
- **성능 오버헤드**: eBPF는 커널과 사용자 공간 간의 컨텍스트 전환으로 인해 성능 오버헤드가 발생할 수 있습니다. Orchestrion은 컴파일 타임에 계측을 삽입하여 런타임 오버헤드를 최소화합니다.  
- **지원 환경**: eBPF는 Linux 환경으로 제한되지만 Orchestrion은 다양한 환경을 지원합니다.  
- **전반적인 기능**: eBPF는 기능이 제한적이지만 Orchestrion은 코드 레벨에서 작동하여 더 많은 기능을 제공합니다.  
  
#### 보안을 위한 Orchestrion  
  
- 코드 레벨 작업을 통해 프로그램의 제어 흐름을 변경할 수 있는 계측을 삽입하여 RASP 기능을 구현합니다.  
- SQL 주입 또는 로컬 파일 포함과 같은 일반적인 취약점으로부터 애플리케이션을 자체적으로 보호할 수 있습니다.  
- 특정 API를 다른 API로 완전히 대체할 수 있어 개발자가 추적 컨텍스트 체이닝을 위해 모든 비즈니스 로직 계층에 컨텍스트 값을 전달하는 것에 대해 생각할 필요가 없습니다.

## Comments



_No public comments on this page._
