Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

DSL

DSL은 Domain Specific Language 의 줄임말이다. 범용적으로 사용하는 언어가 아닌 특수한 (좁은)영역에 사용하는 언어를 통칭한다. 별로 사용하지 않는 언어라고 생각할 수 있겠는데, 이미 여러 영역에서 사용하고 있다. awk, 빌드 환경을 정의 하기 위한 make, ant, 스프레드쉬트에 내장된 매크로등이 DSL이다.

이들 DSL은 C와 같은 또 다른 언어를 이용해서 만드는데, 루비를 이용하면 좀 더 쉽게 DSL을 만들 수 있다. 실제 루비를 이용한 DSL은 여러 소프트웨어에서 응용되고 있다. Chef는 시스템관리를 위한 특수한 목적에 사용하는 언어인데, 시스템관리 목적에 맞는 DSL을 개발해서 사용하고 있다. 아래는 디렉토리를 관리하기 위해서 사용하는 chef 문법이다.
directory "/tmp/folder" do
  owner 'root'
  group 'root'
  mode '0755'
  action :create
end
directory 뿐만 아니라 유저, 패키지, 파일, http 클라이언트, 로그, raid, git 관리 등 모든 시스템자원에 대해서 아래의 문법 형식을 사용한다.
type "name" do
  attribute "value"
  action :type_of_action
end
목표가 정해지고 그에 맞는 문법 형식을 제공하기 때문에, 개발자는 간단하게 chef를 사용할 수 있다. 관리 기능을 개발하는 chef 개발자도 정해진 문법에 따라서 쉽게 개발할 수 있다.