본문으로 건너뛰기

Daytona란 무엇인가? AI가 만든 코드를 안전하게 실행하는 샌드박스

· 약 6분
Datapopcorn CEO / AI automation educator
이 글과 연결된 글 보기
7편 · 12개 연결
100%
해외 출장 가이드북, 메일·캘린더·지도에 흩어진 정보로 15쪽 PDF 만들기 (프롬프트 포함)이제 직원 급여도 AI가 보냅니다: 은행 앱 급여 이체부터 급여명세서 발송까지 AI 에이전트에 맡긴 8단계 (ADB)카페 원가·마진 계산기: 우유값 오르면 어떤 메뉴부터 남는 게 줄어들까Daytona란 무엇인가? AI가 만든 코드를 안전하게 실행하는 샌드박스문자로 쓰는 AI 비서 instinct, 처음엔 무슨 일을 시켜볼까요?Jev·Claude·GPT Mini, 공룡게임에서 누가 더 오래 버틸까요?REA가 뭔가요? 공식 사례부터 설치·팩맨 실습까지

드래그로 이동 · 휠/두 손가락으로 확대 · 방향키로 글 선택 · 0으로 맞춤. 실선: 본문 링크, 점선: 시리즈·주제의 대표 연결.

표시된 글 7편 목록
전체 글 연결 탐색

AI에게 코드를 만들어달라고 하는 순간, 다음 질문이 따라옵니다. 이 코드를 내 컴퓨터나 운영 서버에서 바로 실행해도 될까요? Daytona는 이 문제를 해결하기 위해, AI가 만든 코드를 별도로 격리된 실행 환경인 Sandbox에서 돌릴 수 있게 해주는 서비스입니다. 이 글에서는 Daytona가 무엇인지, 언제 필요한지, 대시보드에서 첫 코드를 실행하는 흐름은 어떤지 처음 접하는 사람의 눈높이에서 정리합니다.

Daytona는 원격 개발 서버보다 ‘코드 실행실’에 가깝습니다​

Daytona 공식 문서에서는 Sandbox를 전용 커널, 파일시스템, 네트워크 스택, vCPU·메모리·디스크를 가진 격리된 컴퓨터로 설명합니다. 사람이 직접 접속해 코딩할 수도 있지만, 핵심은 SDK·API·CLI를 통해 프로그램이나 AI 에이전트가 Sandbox를 만들고, 파일을 다루고, 프로세스와 코드를 실행하는 데 있습니다.

쉽게 비유하면 n8n이 여러 작업을 연결하는 지휘자라면, Daytona는 그중 위험하거나 복잡한 코드를 맡아 실행하는 별도 작업실입니다. 코드를 내 운영 서버 프로세스와 섞지 않고, 필요할 때 만들고 사용한 뒤 중지할 수 있다는 점이 핵심입니다.

어떤 문제를 해결하나요?​

AI가 만든 코드를 내 서버에서 바로 실행하는 위험​

AI 에이전트는 파일을 만들고, 패키지를 설치하고, 코드를 실행하면서 결과를 수정합니다. 이 과정을 내 컴퓨터나 운영 서버에서 바로 실행하면 잘못된 파일 삭제, 의도하지 않은 네트워크 요청, 패키지 충돌 같은 문제가 생길 수 있습니다. Daytona는 이런 실행을 별도 Sandbox 안으로 분리하는 선택지를 제공합니다.

다만 Sandbox가 모든 보안 책임을 대신해주는 것은 아닙니다. API 키와 개인정보는 코드나 화면에 넣지 말고 Secret으로 분리해야 하며, 네트워크가 필요하지 않은 작업에는 외부 네트워크를 막는 설정을 검토해야 합니다.

매번 달라지는 개발환경​

“내 컴퓨터에서는 되는데요”라는 문제는 코드보다 실행환경에서 생기는 경우가 많습니다. 어떤 Snapshot이나 이미지를 사용했는지, 메모리와 디스크를 얼마나 배정했는지 기록해두면 실험을 다시 실행하기 쉬워집니다. Daytona는 Sandbox 상태를 저장해 재사용하는 Snapshot과 파일을 공유·보존하는 Volume을 제공합니다.

여러 작업을 동시에 실행해야 하는 상황​

AI 에이전트 평가, 코드 생성 후 테스트, 데이터 분석처럼 작업마다 독립 환경이 필요한 경우에도 Sandbox 모델이 잘 맞습니다. 하나의 서버에 모든 작업을 쌓는 대신, 작업 단위로 실행환경을 나누고 결과를 수집하는 구조를 만들 수 있습니다.

대시보드에서 보이는 핵심 개념​

Daytona Sandboxes 목록에서 실행 중인 샌드박스 확인

Daytona 대시보드의 Sandboxes 목록. 상태, Snapshot, 지역, 리소스를 한 화면에서 확인할 수 있습니다.

Sandbox​

실제로 코드를 실행하는 컴퓨터입니다. 생성할 때 이름, Snapshot 또는 이미지, 지역, 리소스, 수명주기, 환경변수, 라벨, 네트워크 정책을 정할 수 있습니다.

Snapshot과 Image​

Snapshot은 이미 설정한 실행환경을 저장해 다시 사용하는 방식이고, Image는 시작점이 되는 컨테이너 이미지입니다. 처음에는 기본 Snapshot으로 시작하고, 패키지와 설정이 반복된다면 Snapshot을 만드는 흐름을 익히면 됩니다.

Lifecycle​

Auto-stop은 일정 시간 사용하지 않은 Sandbox를 중지하는 설정입니다. Auto-archive와 Auto-delete도 함께 설정할 수 있고, Ephemeral을 선택하면 중지 시 Sandbox를 자동 삭제하는 흐름을 만들 수 있습니다. 테스트용 환경과 장기 보존이 필요한 환경의 설정을 다르게 가져가야 합니다.

첫 Sandbox 만들기​

Daytona Sandbox 생성 화면의 Snapshot, 리전, 수명주기, 네트워크 설정

Sandbox 생성 화면. Snapshot 또는 Image, 지역, 수명주기, 환경변수, 네트워크 옵션을 설정할 수 있습니다.

대시보드에서 Create Sandbox를 누르면 다음 항목을 설정할 수 있습니다.

  1. Name: 사람이 알아보기 쉬운 이름입니다. 생략하면 Sandbox ID가 이름으로 사용됩니다.
  2. Source: Snapshot 또는 Image를 선택합니다. 처음이라면 기본 Snapshot으로 시작할 수 있습니다.
  3. Region: Sandbox가 실행될 지역입니다.
  4. Lifecycle: Auto-stop, Auto-archive, Auto-delete 시간을 정합니다.
  5. Environment Variables: 실행에 필요한 일반 환경변수를 입력합니다. 비밀값은 가능하면 Secrets를 사용합니다.
  6. Network: Public HTTP Preview를 열지, 외부 네트워크를 차단할지 결정합니다.

여기서 중요한 선택은 네트워크와 수명주기입니다. 웹 결과를 받아야 하는 코드라면 외부 네트워크가 필요할 수 있지만, 계산만 하는 작업이라면 네트워크를 닫는 편이 안전합니다. 또한 계속 켜둘 필요가 없는 실험은 Auto-stop을 짧게 설정하는 것이 좋습니다.

터미널에서 첫 코드 실행하기​

Sandbox를 만들면 상세 화면에서 Terminal을 열 수 있습니다. 이번 실습에서는 Python Sandbox를 시작한 뒤 다음 한 줄을 실행했습니다.

python -c "print('Hello from Daytona')"

출력은 다음과 같이 확인됩니다.

Hello from Daytona

Daytona Sandbox 터미널에서 Python 코드 실행 결과 확인

Sandbox 상세 화면의 Terminal 탭에서 Python 실행 결과를 확인한 모습입니다.

현재 대시보드에서 확인한 실습 환경은 daytonaio/sandbox:0.8.0 이미지, us 지역, 1 vCPU, 1 GiB 메모리, 3 GiB 디스크였습니다. 실험용으로는 충분하지만, 데이터 분석이나 빌드처럼 무거운 작업은 리소스를 별도로 조정해야 합니다.

SDK로 연결하면 어디까지 할 수 있나요?​

대시보드에서 한 번 실행해보는 것은 Daytona의 표면적인 사용법입니다. 실제 자동화에서는 SDK나 API로 Sandbox를 만들고, 파일을 업로드하고, 프로세스를 실행하고, 결과를 회수하는 흐름을 구성합니다. 공식 문서의 Python 시작 예시는 다음과 같은 형태입니다.

pip install daytona

API 키는 코드에 직접 적지 말고 환경변수나 Daytona Secrets로 관리합니다.

from daytona import Daytona, DaytonaConfig

config = DaytonaConfig(api_key="YOUR_API_KEY")
daytona = Daytona(config)
sandbox = daytona.create()
response = sandbox.process.code_run('print("Hello World")')
print(response.result)

이 방식으로 연결하면 n8n이 받은 요청을 Daytona 실행 작업으로 넘기거나, AI 에이전트가 작업마다 새 Sandbox를 만들어 코드를 실행하게 만들 수 있습니다. API 키를 생성하거나 외부 시스템에 연결할 때는 권한 범위와 비용, 네트워크 정책을 먼저 확인해야 합니다.

n8n과 함께 쓴다면​

Daytona가 n8n을 대체하는 것은 아닙니다. 두 서비스의 역할은 다릅니다.

역할n8nDaytona
입력 받기폼, Webhook, 트리거API 또는 SDK 호출
작업 흐름노드 연결과 분기Sandbox 생성과 실행
코드 실행간단한 Code 노드독립된 Python·Node.js 환경
결과 처리저장, 알림, 후속 API실행 결과와 파일 반환

예를 들어 n8n이 Webhook으로 분석 요청을 받고, Daytona에서 Python 분석 코드를 실행한 뒤, 결과 파일을 Google Drive에 저장하고 Slack으로 알림을 보내는 구성을 생각할 수 있습니다. 이때 n8n은 오케스트레이션을 담당하고 Daytona는 격리된 실행을 담당합니다.

Daytona가 특히 잘 맞는 경우​

  • AI 에이전트가 작성한 코드를 실행해야 할 때
  • 사용자별로 독립된 실행환경이 필요할 때
  • 코드 생성 후 테스트를 반복해야 할 때
  • 데이터 분석이나 파일 변환 작업을 임시 환경에서 처리할 때
  • 같은 환경을 여러 번 재사용해야 할 때
  • n8n에서 일반 노드만으로 처리하기 어려운 Python·Node.js 작업이 있을 때

반대로 단순한 스크립트 하나를 내 컴퓨터에서 실행하는 경우, 항상 켜져 있어야 하는 운영 API 서버, 운영 데이터베이스를 Daytona 안에 직접 넣는 경우에는 다른 도구가 더 적합할 수 있습니다. Daytona는 만능 호스팅 서비스라기보다, 필요할 때 안전하게 꺼내 쓰는 실행 인프라에 가깝습니다.

이번 실습에서 배운 점​

첫째, Daytona의 핵심 단위는 프로젝트가 아니라 Sandbox입니다. 먼저 실행환경을 만들고, 그 안에서 파일과 프로세스를 다루는 방식에 익숙해져야 합니다.

둘째, 생성 버튼을 누르는 것보다 설정이 더 중요합니다. Snapshot, 리소스, Auto-stop, 네트워크 정책을 작업 성격에 맞게 정해야 비용과 보안 리스크를 함께 관리할 수 있습니다.

셋째, 대시보드에서 성공한 한 줄 실행을 SDK·API 기반 자동화로 확장하는 것이 다음 단계입니다. 처음부터 복잡한 AI 에이전트를 만들기보다, 코드 한 줄 실행, 파일 생성, 결과 회수 순서로 작게 검증하는 편이 안전합니다.

다음 액션​

Daytona를 처음 접했다면 다음 순서로 실습해보세요.

  1. 기본 Snapshot으로 Sandbox를 하나 만듭니다.
  2. Terminal에서 Python 한 줄을 실행합니다.
  3. 파일을 하나 만들고 다시 실행합니다.
  4. Auto-stop과 Ephemeral 설정의 차이를 확인합니다.
  5. 테스트용 API 키로 SDK에서 Sandbox를 생성해봅니다.
  6. n8n Webhook에서 실행 요청을 받아 Daytona에 전달해봅니다.

Daytona는 AI가 코드를 만드는 시대에 “그 코드를 어디에서 실행할 것인가?”라는 질문에 답하는 도구입니다. 로컬 개발환경과 운영 서버 사이에 격리된 실행공간이 필요하다면, 대시보드에서 한 번 Sandbox를 만들고 짧은 코드부터 실행해보는 것이 가장 좋은 시작입니다.