Dart 튜토리얼 21편: 서버·CLI 입문(server·get started)
요약
핵심 요지
- 문제 정의: 서버·CLI 앱은 “설치부터 실행까지” 절차가 한 번에 잡히지 않으면, 첫 실행에서 막히고 학습이 끊긴다.
- 핵심 주장: Dart 서버·CLI는 “브라우저에서 빠르게 체험(DartPad) → SDK 설치 → 프로젝트 생성(
dart create) → 실행(dart run) → 배포용 컴파일(dart compile)” 순서로 시작하는 것이 가장 단순하다. - 주요 근거:
dart create -t console1,dart run2,dart compile exe3 흐름이 단계로 제시된다. - 실무 기준: 개발 중에는 VM으로 빠르게 반복(
dart run), 배포 전에는 AOT로 네이티브 실행 파일 생성(dart compile exe).
문서가 설명하는 범위
- 서버·CLI 앱 시작을 위한 툴/가이드 진입점(server)
- DartPad로 언어 체험, SDK 설치,
dart create로 프로젝트 생성 dart run으로 실행하고,dart compile로 배포용 실행 파일로 컴파일
읽는 시간: 13분 | 난이도: 초급
참고 자료
문제 상황
서버·CLI 앱은 “프로젝트 만들기”보다 “실행 환경 만들기”에서 막히는 경우가 많습니다.
특히 처음에는 IDE보다 터미널에서 명령을 실행하는 흐름이 기본이기 때문에, 절차가 머릿속에 정리되지 않으면 바로 멈춥니다.
그래서 이 글은 “딱 한 번 따라 하면 실행까지 되는” 최소 흐름을 고정합니다.
해결 방법
단계 1: DartPad에서 “언어 느낌”을 먼저 잡기
Why
NOTE설치 전에 “코드가 어떻게 생겼는지”부터 확인하면, 이후 단계에서 무엇을 하고 있는지 더 잘 이해할 수 있습니다.
또한 DartPad는 브라우저에서 바로 실행해볼 수 있어 진입 장벽이 낮습니다.void main() {print('Hello, World!');}
What
NOTEDartPad는 브라우저에서 Dart 코드를 실행해볼 수 있는 도구입니다.
다만 VM 라이브러리(dart:io4) 같은 일부 기능은 지원하지 않는다는 제한이 함께 안내됩니다.
How
TIP먼저 출력이 되는지 확인한 뒤, 문자열을 바꿔보며 “실행 → 결과” 흐름을 체험합니다.
이 단계에서 목표는 “학습”이 아니라 “실행 감각”을 얻는 것입니다.
Watch out
WARNINGDartPad는
dart:io같은 VM 라이브러리나, 모든 패키지를 자유롭게 import하는 환경이 아닙니다.
즉, 서버·CLI 코드는 결국 로컬 SDK 설치 단계로 넘어가야 합니다.
결론: 설치 전에 DartPad로 “실행 감각”을 먼저 잡고, 서버·CLI는 로컬 SDK로 진행합니다.
단계 2: dart create로 “실행 가능한 최소 프로젝트”를 만든다
Why
NOTE프로젝트 구조를 수동으로 만들면 파일 위치(예:
bin/,lib/)와 설정(pubspec.yaml)에서 실수가 생기기 쉽습니다.
템플릿으로 시작하면 “바로 실행되는 형태”가 보장됩니다.
What
NOTE
dart create는 템플릿을 기반으로 프로젝트를 생성합니다.
서버·CLI 입문에서는console템플릿으로 시작하는 예시가 제시됩니다.
How
TIP다음 명령으로 콘솔 앱을 생성합니다.
Terminal window $ dart create -t console cli생성된 프로젝트에는 다음이 포함된다고 설명됩니다.
bin/cli.dart(진입점main()),lib/cli.dart(기능 코드),pubspec.yaml(메타데이터/의존성).
Watch out
WARNING프로젝트 생성 과정에서
dart pub get이 함께 실행될 수 있다는 안내가 있습니다.
즉, 의존성을 바꾸면 다시dart pub get을 실행하는 습관이 필요합니다.
결론: dart create로 “바로 실행되는 구조”를 먼저 만든 뒤, 그 위에 코드를 얹습니다.
단계 3: dart run으로 실행하고, 코드를 수정해 “반복”을 만든다
Why
NOTE서버·CLI 개발은 “수정 → 실행 → 확인”의 반복이 핵심입니다.
이 반복이 빨라야 학습도 빨라집니다.
What
NOTE
dart run은 Dart VM으로 프로그램을 실행합니다.
예시는 프로젝트 루트에서dart run을 실행하는 방식으로 제시됩니다.
How
TIP프로젝트로 이동해 실행합니다.
Terminal window $ cd cli$ dart runHello world: 42!그리고
lib/cli.dart를 수정한 뒤 다시 실행해 출력이 달라지는지 확인합니다.int calculate() {return 6 * 7 ~/ 2;}Terminal window $ dart runHello world: 21!
Watch out
WARNING서버·CLI 코드는 실행 환경(로컬 OS, 파일 경로 등)에 영향을 받습니다.
따라서 “재현 가능한 실행”을 위해 프로젝트 루트에서 명령을 실행하는 습관이 중요합니다.
결론: 개발 단계에서는 dart run으로 빠르게 실행하고 결과를 확인하는 반복을 만든다.
단계 4: 배포 관점에서는 dart compile exe로 “네이티브 실행 파일”을 만든다
Why
NOTE개발 환경에서는 빠른 반복이 중요하지만, 배포 환경에서는 “즉시 시작”과 “최적화된 실행”이 중요해집니다.
그래서 완료된 앱은 AOT 컴파일로 네이티브 실행 파일로 만든다는 흐름이 제시됩니다.
What
NOTE
dart compile exe는 Dart 코드를 네이티브 머신 코드 실행 파일로 컴파일합니다.
예시는bin/cli.dart를 대상으로 컴파일합니다.
How
TIP컴파일 명령은 다음과 같습니다.
Terminal window $ dart compile exe bin/cli.dart
Watch out
WARNING컴파일 결과물은 플랫폼/아키텍처의 영향을 받습니다.
따라서 배포 타깃이 바뀌면, 그 타깃에서 다시 빌드하는 흐름이 필요할 수 있습니다.
결론: 배포 전에는 dart compile exe로 실행 파일을 만들어 “배포 단위”를 고정합니다.
Footnotes
공유
이 글이 도움이 되었다면 다른 사람과 공유해주세요!