SlideShare ist ein Scribd-Unternehmen logo
1 von 98
Downloaden Sie, um offline zu lesen
내 컴에선 잘 되던데?
Vagrant로 서버와
동일한 개발환경 꾸미기
기술전략팀 | 강소리
@curioe 강소리입니다
@curioe 강소리입니다


ravash
디버깅의 6단계



디버깅의 6단계
디버깅의 6단계



            디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
디버깅의 6단계



            디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
디버깅의 6단계



             디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
디버깅의 6단계



             디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
디버깅의 6단계



               디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
디버깅의 6단계



               디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
디버깅의 6단계



               디버깅의 6단계
1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
왜 내 컴에서만 잘 되는 걸까?



                                개발 환경 불일치




Image - http://futurist.se/gldt/page/3/
왜 내 컴에서만 잘 되는 걸까?



개발 환경 불일치
왜 내 컴에서만 잘 되는 걸까?



      프로젝트마다 다 달라




Image - http://itprojectguide.blogspot.kr/2007/02/project-variation.html
해결책은 있어요



          해결책은 있어요




Image - http://www.flickr.com/photos/86979666@N00/7623744678/
해결책은 가상화



해결책은 가상화
해결책은 가상화



              로컬에 서버 VM 설치




Image - http://www.flickr.com/photos/catch2205/4361365020/sizes/o/in/photostream/
해결책은 가상화
해결책은 가상화
해결책은 가상화




쓰기 불편한 것은 마찬가지
로컬 가상머신을 손쉽게 빌드하자




로컬 가상머신을 손쉽게 관리하자.
개발과 실서버의 일치를 위해




 개발과 실서버의 일치를 위해
로컬 가상머신을 손쉽게 관리하자.
vagrant up




$ vagrant up
Vagrant를 소개합니다.



     Vagrant
 개발과 실서버의 일치를 위해
로컬 가상머신을 손쉽게 관리하자.
Vagrant를 소개합니다.



          Vagrant
가상머신 관리 툴
http://vagrantup.com
Vagrant를 소개합니다.



             Vagrant
@mitchellh
오픈소스 MIT 라이센스
Ruby
현재 1.0.5
<< 1.0.0 - 2012.03.07
<< 0.1.0 - 2010.03.07
Vagrant를 소개합니다.
Vagrant로 로컬에 VM 실행하기




우분투 10.04




            Ubun tu VM
Vagrant로 로컬에 우분투 VM 실행하기



  준비물
Vagrant로 로컬에 우분투 VM 실행하기



VirtualBox 설치




http://virtualbox.org
Vagrant로 로컬에 우분투 VM 실행하기



       Vagrant 설치




http://downloads.vagrantup.com
Vagrant로 로컬에 우분투 VM 실행하기


$ vagrant
Usage: vagrant [-v] [-h] command [<args>]

    -v, --version                    Print the version and exit.
    -h, --help                       Print this help.

Available subcommands:
     box
     destroy
     gem
     halt
     init           Command Line Interface
     package
     provision
     reload                                   GUI 없어요
     resume
     ssh
     ssh-config
     status
     suspend
     up
Vagrant로 로컬에 우분투 VM 실행하기


@work$ vagrant box add ↵
    lucid32 ↵
    http://files.vagrantup.com/lucid32.box
@work$



  내 로컬에서의 별칭

         미리 빌드된 우분투 10.04 가상머신 이미지
Vagrant로 로컬에 우분투 VM 실행하기


@work$ vagrant box add
    lucid32
    http://files.vagrantup.com/lucid32.box
@work$ mkdir project
@work$ cd project
@project$
Vagrant로 로컬에 우분투 VM 실행하기


@work$ vagrant box add
    lucid32
    http://files.vagrantup.com/lucid32.box
@work$ mkdir project
@work$ cd project
@project$ vagrant init lucid32
@project$




                    방금 우분투 가상머신 별칭
Vagrant로 로컬에 우분투 VM 실행하기


@work$ vagrant box add
    lucid32
    http://files.vagrantup.com/lucid32.box
@work$ mkdir project
@work$ cd project
@project$ vagrant init lucid32
@project$ vagrant up
@project$
Vagrant로 로컬에 우분투 VM 실행하기


@project$ vagrant ssh
Linux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04
UTC 2012 i686 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to Ubuntu!
 * Documentation: https://help.ubuntu.com/
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 07:26:29 2012 from 10.0.2.2
vagrant@lucid32:~$ uname -na
Linux lucid32 2.6.32-38-generic #83-Ubuntu
SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/
Linux
vagrant@lucid32:~$
Vagrant로 로컬에 우분투 VM 실행하기


@work$ vagrant box add
    lucid32
    http://files.vagrantup.com/lucid32.box
@work$ mkdir project
@work$ cd project
@project$ vagrant init lucid32
@project$ vagrant up
@project$
Vagrant 기본 지식


@work$ vagrant box add
    lucid32
    http://files.vagrantup.com/lucid32.box
h3@work$ mkdir project
h3@work$ cd project
@project$ vagrant init lucid32
@project$ vagrant up
                         분해 요.
                 알아도충
           명령  만
         요
Vagrant 기본 지식


@work$ vagrant box add <name> <url>


           VM 이미지 다운로드




                B OX
Vagrant 기본 지식



        Box
기본 설정을 가진 VM 템플릿 이미지
Vagrant 기본 지식



        Box
기본 설정을 가진 VM 템플릿 이미지

         메모리
         파일시스템
         네트워크
Vagrant 기본 지식


$ vagrant box add lucid32 http://~~
$ cd ~/.vagrant.d/box
@$[HOME]/.vagrant.d/box$ ls -al
drwxr-xr-x Oct 31 17:07 lucid32

                     Ubuntu VM
       Ubunt               Ubuntu VM
               u
                                  Ubuntu VM

                           Ubuntu VM


                      Ubuntu VM
Vagrant 기본 지식



          box 다운로드
공식
 http://files.vagrantup.com/[box이름].box
- lucid32, lucid64, precise32, precise64

3rd party
 http://vagrantbox.es
Vagrant 기본 지식


@project$ vagrant init <box-name>


       Vagrant 프로젝트 설정 파일




                 r antfile
             V ag
Vagrant 기본 지식


$ vagrant init lucid32
   # -*- mode: ruby -*-
   # vi: set ft=ruby :
   Vagrant::Config.run do |config|
     # Every Vagrant virtual environment requires a box to build off of.
     config.vm.box = "lucid32"
     # The url from where the 'config.vm.box' box will be fetched if it
     # doesn't already exist on the user's system.
     config.vm.box_url = "http://files.vagrantup.com/lucid32.box"
     # Forward a port from the guest to the host, which allows for outside
     # computers to access the VM, whereas host only networking does not.
     config.vm.forward_port 8080, 8088
     # Share an additional folder to the guest VM. The first argument is
     # an identifier, the second is the path on the guest to mount the
     # folder, and the third is the path on the host to the actual folder.
     config.vm.share_folder "v-showcase", "/service", "spring-mvc-showcase"
     # Update Server
     config.vm.provision :shell do |shell|
         shell.inline = "apt-get update --fix-missing"
     end
   end
Vagrant로 개발 환경 구성하기




미니 개발 상황극
Vagrant로 개발 환경 구성하기




     개발자 5명
  서버: 우분투 10.04
SW: 자바6, 메이븐2(톰캣)
  소스위치: /service
     포트: 8080
Vagrant로 개발 환경 구성하기



        문제 #1
서버              로컬
              윈도우 2
우분투      !=   맥2
10.04
              우분투 1
                12.04
Vagrant로 개발 환경 구성하기



             문제 #2
     서버              로컬

 자바 1.6.0_24         자바 1.6.0_24
 메이븐 2.2.1           메이븐 2.2.1
                     자바 1.7
설치환경 문서 공유; 버전 제각각 위험
Vagrant로 개발 환경 구성하기



               문제 #3

localhost:8080/spring-mvc-showcase



            Address already in use


                            8080
Vagrant로 개발 환경 구성하기



            문제 #4

( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
Vagrant로 개발 환경 구성하기




“Vagrant 를 사용해보자”
Vagrant로 개발 환경 구성하기




@work$ cd project
@project$ ls
Vagrantfile
@project$ vagrant up
@project$
Vagrant로 개발 환경 구성하기



    문제 #1 해결
서버            로컬
                      Ubuntu VM
             윈도우 2
우분투     ==   맥2       Ubuntu VM
10.04
             우분투 1
                      Ubuntu VM
              12.04
Vagrant로 개발 환경 구성하기




@project$ git clone https://github.com/
SpringSource/spring-mvc-showcase
@project$
@project$ ls
Vagrantfile spring-mvc-showcase
Vagrant로 개발 환경 구성하기

$ vagrant ssh
vagrant@lucid32:~$ sudo apt-get install openjdk-6-jdk
vagrant@lucid32:~$ sudo apt-get install maven2
vagrant@lucid32:~$
vagrant@lucid32:~$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5)
(6b24-1.11.5-0ubuntu1~10.04.2)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)
vagrant@lucid32:~$
vagrant@lucid32:~$ mvn -version
Apache Maven 2.2.1 (rdebian-1)
Java version: 1.6.0_24
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_US, platform encoding:
ANSI_X3.4-1968
OS name: "linux" version: "2.6.32-38-generic" arch:
"i386" Family: "unix"
Vagrant로 개발 환경 구성하기




$ vagrant package
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$




tebica$ vagrant box add newbox
        http://kthcorp.com/package.box
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$




tebica$ vagrant box add newbox
        http://kthcorp.com/package.box
tebica$ vagrant init newbox
tebica$ vagrant up
tebica$
Vagrant로 개발 환경 구성하기



   문제 #2, #4 동시 해결

     환경이 설치된 box 공유
     버전 설정 모두 동일
소프트웨어 다운로드 + 설치 + 설정 1명만
Vagrant로 개발 환경 구성하기



  미니 개발 상황극 (계속)
“VM쓰라고?”
“로그인해서 개발해야해?”
“내가 쓰는 에디터 쓰고 싶은데!”
거룩한 전쟁



   돌발상황
Vim이 최고!
      싸우자

SublimeText 2가 대세
            구글 행아웃에서
              싸우자!

에막스 지옥! 진리의 젯브레인!
이클립스 완전구려!
Vagrant로 개발 환경 구성하기



          파일 동기화
config.vm.share_folder “v-data”,
“/service”, “spring-mvc-showcase”


    $ vagrant reload
Vagrant로 개발 환경 구성하기



파일 동기화




           service      VM


spring-mvc-showcase
                      Host
Vagrant로 개발 환경 구성하기



프로젝트는 무사 진행
Vim이 최고!
       싸우자

 SublimeText 2가 대세
             구글 행아웃에서
               싸우자!

에막스 지옥! 진리의 젯브레인!
이클립스 완전구려!
Vagrant로 개발 환경 구성하기



                   포트 포워딩

    config.vm.forward_port 8080, 8088



             $ vagrant reload
Outside(
           Host(
                   VM(
                         :8080(      :8088(
Vagrant로 개발 환경 구성하기



            문제 #3 해결

localhost:8088/spring-mvc-showcase



                   8088


                          8080
Vagrant로 개발 환경 구성하기



                           SSH
$ vagrant ssh
$ ssh vagrant@localhost -p 2222

  Outside(
             Host(
                     VM(
                            :22(        :2222(
Vagrant로 개발 환경 구성하기




$ git add Vagrantfile
$ git commit -m ‘개발 환경 설정’
$ git push
Vagrant로 개발 환경 구성하기


서버 OS != 로컬 OS
서버 OS == 로컬 OS
설치 환경 문서로 공유
설치 환경 자체가 공유
소프트웨어 버전 불일치
소프트웨어 버전 전부 일치
개발자마다 개발 환경 구축
설치는 단 한명이!
쓰고 있는 포트 충돌
손쉬운 포트 포워딩
Vagrant로 개발 환경 구성하기




$ vagrant destroy
Vagrant로 개발 환경 구성하기




“사실은 더 복잡해요”
분산 환경 구성하기



                     Multi-VM
Vagrant::Config.run do |config|
  config.vm.define :web do |web_config|
    web_config.vm.box = "web"
    web_config.vm.forward_port 80, 8080
  end

  config.vm.define :db do |db_config|
    db_config.vm.box = "db"
    db_config.vm.forward_port 3306, 3306
  end
end
분산 환경 구성하기



           Host-Only 네트워킹
Vagrant::Config.run do |config|
  config.vm.define :web do |web_config|
    web_config.vm.box = "web"
    web_config.vm.forward_port 80, 8080
    web_config.vm.network :hostonly, "10.11.12.13"
  end

  config.vm.define :db do |db_config|
    db_config.vm.box = "db"
    db_config.vm.forward_port 3306, 3306
    db_config.vm.network :hostonly, "10.11.12.14"
  end
end
Vagrant 사용



           일반적인 사용법
1. box 는 사내 웹서버에 업로드
   $ vagrant box add ~

2. 프로젝트 내에 Vagrantfile을 포함
   $ git add Vagrantfile
   $ git commit -m ‘개발 환경 설정’

3. Vagrant 사용
   $ vagrant up
Vagrant 사용



                    facebook/tornado




https://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrantfile
프로비저닝



      조금 아쉬워요
소프트웨어 버전 업데이트
box는 이미 배포 완료
프로비저닝



             프로비저닝




Image - http://www.scalarium.com/features/automation/
프로비저닝



          프로비저닝

config.vm.provision :{provisioner}



shell
chef
puppet
Chef 프로비저닝

Chef Server 프로비저닝
Chef 프로비저닝

Chef Server 프로비저닝




             VM
Chef 프로비저닝



           Chef Server 프로비저닝
config.vm.provision :chef_client do |chef|
    chef.chef_server_url = "http://cocina.kthcorp.com"
    chef.validation_key_path = "chef/validation.pem"
    chef.run_list = ["role[baas]"]
end
Chef 프로비저닝




  “Chef 서버
없어도 실망 마세요~”
Chef 프로비저닝


Chef Solo 프로비저닝



 VM
Chef 프로비저닝


            Chef Solo 프로비저닝
              !"" cookbooks
               #"" apache2
               #"" apt
               #"" php
               !"" php_sample


config.vm.provision :chef_solo do |chef|
      chef.cookbooks_path = "cookbooks"
      chef.add_recipe "php_sample"
end

              https://github.com/curioe/vagrant_sample
Chef 프로비저닝
Vagrant로 VM을 관리하자



     Vagrant
 개발과 실서버의 일치를 위해
로컬 가상머신을 손쉽게 관리하자.
vagrant up




프로젝트를 새로 시작할 때
vagrant up




$ vagrant up
vagrant up




프로젝트에 새 동료가 참여할 때
vagrant up




$ vagrant up
vagrant up




   서버와 동일한
개발 환경을 꾸미기 위해
vagrant up




$ vagrant up
감사합니다.
개발실 / 기술전략팀 / 강소리
 curioe@kthcorp.com
       @curioe
고마워요, 레퍼런스



                     레퍼런스
https://speakerdeck.com/mitchellh/develop-and-test-configuration-
management-scripts-with-vagrant

https://speakerdeck.com/u/lewg/p/consistent-local-development-
with-vagrant-and-chef

Weitere ähnliche Inhalte

Was ist angesagt?

Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용NAVER D2
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 mWonchang Song
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS IntroductionRemotty
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce DockerYongbok Kim
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2XpressEngine
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치Lee Seungeun
 
manage inhouse openstack the hard way(kakao case study about 10,000 vms)
manage inhouse openstack the hard way(kakao case study about 10,000 vms)manage inhouse openstack the hard way(kakao case study about 10,000 vms)
manage inhouse openstack the hard way(kakao case study about 10,000 vms)어형 이
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Keon Ahn
 
docker-based remote desktop
docker-based remote desktopdocker-based remote desktop
docker-based remote desktopHyeong-Kyu Lee
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 

Was ist angesagt? (20)

Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치
 
manage inhouse openstack the hard way(kakao case study about 10,000 vms)
manage inhouse openstack the hard way(kakao case study about 10,000 vms)manage inhouse openstack the hard way(kakao case study about 10,000 vms)
manage inhouse openstack the hard way(kakao case study about 10,000 vms)
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
 
docker-based remote desktop
docker-based remote desktopdocker-based remote desktop
docker-based remote desktop
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 

Ähnlich wie [H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기

도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment SettingKwangyoun Jung
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324종인 전
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02정출 김
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)wonyong hwang
 
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Dongil Yeom
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나슬 김
 
Sharepoint2010을 활용한 개발환경 구축
Sharepoint2010을 활용한 개발환경 구축Sharepoint2010을 활용한 개발환경 구축
Sharepoint2010을 활용한 개발환경 구축minjin00
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축Heo Seungwook
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)I Goo Lee
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxwonyong hwang
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기GyeongSeok Seo
 
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...Cloud-Barista Community
 

Ähnlich wie [H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기 (20)

jbug-vagrant
jbug-vagrantjbug-vagrant
jbug-vagrant
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
K8s in action02
K8s in action02K8s in action02
K8s in action02
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
Internship backend
Internship backendInternship backend
Internship backend
 
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
 
Sharepoint2010을 활용한 개발환경 구축
Sharepoint2010을 활용한 개발환경 구축Sharepoint2010을 활용한 개발환경 구축
Sharepoint2010을 활용한 개발환경 구축
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기
 
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
 

Mehr von KTH, 케이티하이텔

[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈KTH, 케이티하이텔
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기KTH, 케이티하이텔
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for AppspressoKTH, 케이티하이텔
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략KTH, 케이티하이텔
 
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터KTH, 케이티하이텔
 
[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅KTH, 케이티하이텔
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
 
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0KTH, 케이티하이텔
 
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.KTH, 케이티하이텔
 
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'KTH, 케이티하이텔
 
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자KTH, 케이티하이텔
 
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEPKTH, 케이티하이텔
 
[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기KTH, 케이티하이텔
 

Mehr von KTH, 케이티하이텔 (20)

[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
 
[H3 2012] UX, 애자일하고 싶어요
[H3 2012] UX, 애자일하고 싶어요[H3 2012] UX, 애자일하고 싶어요
[H3 2012] UX, 애자일하고 싶어요
 
[H3 2012] Instant Prototyping with ROR
[H3 2012] Instant Prototyping with ROR[H3 2012] Instant Prototyping with ROR
[H3 2012] Instant Prototyping with ROR
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
 
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
 
[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
 
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
 
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
 
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
 
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
 
[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기
 

[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기

  • 1. 내 컴에선 잘 되던데? Vagrant로 서버와 동일한 개발환경 꾸미기 기술전략팀 | 강소리
  • 5. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
  • 6. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
  • 7. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
  • 8. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
  • 9. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석 5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
  • 10. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석 5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성 6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  • 11. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석 5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성 6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  • 12. 왜 내 컴에서만 잘 되는 걸까? 개발 환경 불일치 Image - http://futurist.se/gldt/page/3/
  • 13. 왜 내 컴에서만 잘 되는 걸까? 개발 환경 불일치
  • 14. 왜 내 컴에서만 잘 되는 걸까? 프로젝트마다 다 달라 Image - http://itprojectguide.blogspot.kr/2007/02/project-variation.html
  • 15. 해결책은 있어요 해결책은 있어요 Image - http://www.flickr.com/photos/86979666@N00/7623744678/
  • 17. 해결책은 가상화 로컬에 서버 VM 설치 Image - http://www.flickr.com/photos/catch2205/4361365020/sizes/o/in/photostream/
  • 21. 로컬 가상머신을 손쉽게 빌드하자 로컬 가상머신을 손쉽게 관리하자.
  • 22. 개발과 실서버의 일치를 위해 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
  • 24. Vagrant를 소개합니다. Vagrant 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
  • 25. Vagrant를 소개합니다. Vagrant 가상머신 관리 툴 http://vagrantup.com
  • 26. Vagrant를 소개합니다. Vagrant @mitchellh 오픈소스 MIT 라이센스 Ruby 현재 1.0.5 << 1.0.0 - 2012.03.07 << 0.1.0 - 2010.03.07
  • 28. Vagrant로 로컬에 VM 실행하기 우분투 10.04 Ubun tu VM
  • 29. Vagrant로 로컬에 우분투 VM 실행하기 준비물
  • 30. Vagrant로 로컬에 우분투 VM 실행하기 VirtualBox 설치 http://virtualbox.org
  • 31. Vagrant로 로컬에 우분투 VM 실행하기 Vagrant 설치 http://downloads.vagrantup.com
  • 32. Vagrant로 로컬에 우분투 VM 실행하기 $ vagrant Usage: vagrant [-v] [-h] command [<args>] -v, --version Print the version and exit. -h, --help Print this help. Available subcommands: box destroy gem halt init Command Line Interface package provision reload GUI 없어요 resume ssh ssh-config status suspend up
  • 33. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add ↵ lucid32 ↵ http://files.vagrantup.com/lucid32.box @work$ 내 로컬에서의 별칭 미리 빌드된 우분투 10.04 가상머신 이미지
  • 34. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box @work$ mkdir project @work$ cd project @project$
  • 35. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box @work$ mkdir project @work$ cd project @project$ vagrant init lucid32 @project$ 방금 우분투 가상머신 별칭
  • 36. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box @work$ mkdir project @work$ cd project @project$ vagrant init lucid32 @project$ vagrant up @project$
  • 37. Vagrant로 로컬에 우분투 VM 실행하기 @project$ vagrant ssh Linux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/Linux Ubuntu 10.04.4 LTS Welcome to Ubuntu! * Documentation: https://help.ubuntu.com/ New release 'precise' available. Run 'do-release-upgrade' to upgrade to it. Welcome to your Vagrant-built virtual machine. Last login: Fri Sep 14 07:26:29 2012 from 10.0.2.2 vagrant@lucid32:~$ uname -na Linux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/ Linux vagrant@lucid32:~$
  • 38. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box @work$ mkdir project @work$ cd project @project$ vagrant init lucid32 @project$ vagrant up @project$
  • 39. Vagrant 기본 지식 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box h3@work$ mkdir project h3@work$ cd project @project$ vagrant init lucid32 @project$ vagrant up 분해 요. 알아도충 명령 만 요
  • 40. Vagrant 기본 지식 @work$ vagrant box add <name> <url> VM 이미지 다운로드 B OX
  • 41. Vagrant 기본 지식 Box 기본 설정을 가진 VM 템플릿 이미지
  • 42. Vagrant 기본 지식 Box 기본 설정을 가진 VM 템플릿 이미지 메모리 파일시스템 네트워크
  • 43. Vagrant 기본 지식 $ vagrant box add lucid32 http://~~ $ cd ~/.vagrant.d/box @$[HOME]/.vagrant.d/box$ ls -al drwxr-xr-x Oct 31 17:07 lucid32 Ubuntu VM Ubunt Ubuntu VM u Ubuntu VM Ubuntu VM Ubuntu VM
  • 44. Vagrant 기본 지식 box 다운로드 공식 http://files.vagrantup.com/[box이름].box - lucid32, lucid64, precise32, precise64 3rd party http://vagrantbox.es
  • 45. Vagrant 기본 지식 @project$ vagrant init <box-name> Vagrant 프로젝트 설정 파일 r antfile V ag
  • 46. Vagrant 기본 지식 $ vagrant init lucid32 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant::Config.run do |config| # Every Vagrant virtual environment requires a box to build off of. config.vm.box = "lucid32" # The url from where the 'config.vm.box' box will be fetched if it # doesn't already exist on the user's system. config.vm.box_url = "http://files.vagrantup.com/lucid32.box" # Forward a port from the guest to the host, which allows for outside # computers to access the VM, whereas host only networking does not. config.vm.forward_port 8080, 8088 # Share an additional folder to the guest VM. The first argument is # an identifier, the second is the path on the guest to mount the # folder, and the third is the path on the host to the actual folder. config.vm.share_folder "v-showcase", "/service", "spring-mvc-showcase" # Update Server config.vm.provision :shell do |shell| shell.inline = "apt-get update --fix-missing" end end
  • 47. Vagrant로 개발 환경 구성하기 미니 개발 상황극
  • 48. Vagrant로 개발 환경 구성하기 개발자 5명 서버: 우분투 10.04 SW: 자바6, 메이븐2(톰캣) 소스위치: /service 포트: 8080
  • 49. Vagrant로 개발 환경 구성하기 문제 #1 서버 로컬 윈도우 2 우분투 != 맥2 10.04 우분투 1 12.04
  • 50. Vagrant로 개발 환경 구성하기 문제 #2 서버 로컬 자바 1.6.0_24 자바 1.6.0_24 메이븐 2.2.1 메이븐 2.2.1 자바 1.7 설치환경 문서 공유; 버전 제각각 위험
  • 51. Vagrant로 개발 환경 구성하기 문제 #3 localhost:8080/spring-mvc-showcase Address already in use 8080
  • 52. Vagrant로 개발 환경 구성하기 문제 #4 ( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
  • 53. Vagrant로 개발 환경 구성하기 “Vagrant 를 사용해보자”
  • 54. Vagrant로 개발 환경 구성하기 @work$ cd project @project$ ls Vagrantfile @project$ vagrant up @project$
  • 55. Vagrant로 개발 환경 구성하기 문제 #1 해결 서버 로컬 Ubuntu VM 윈도우 2 우분투 == 맥2 Ubuntu VM 10.04 우분투 1 Ubuntu VM 12.04
  • 56. Vagrant로 개발 환경 구성하기 @project$ git clone https://github.com/ SpringSource/spring-mvc-showcase @project$ @project$ ls Vagrantfile spring-mvc-showcase
  • 57. Vagrant로 개발 환경 구성하기 $ vagrant ssh vagrant@lucid32:~$ sudo apt-get install openjdk-6-jdk vagrant@lucid32:~$ sudo apt-get install maven2 vagrant@lucid32:~$ vagrant@lucid32:~$ java -version java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-0ubuntu1~10.04.2) OpenJDK Client VM (build 20.0-b12, mixed mode, sharing) vagrant@lucid32:~$ vagrant@lucid32:~$ mvn -version Apache Maven 2.2.1 (rdebian-1) Java version: 1.6.0_24 Java home: /usr/lib/jvm/java-6-openjdk/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux" version: "2.6.32-38-generic" arch: "i386" Family: "unix"
  • 58. Vagrant로 개발 환경 구성하기 $ vagrant package
  • 59. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$
  • 60. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$
  • 61. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$ tebica$ vagrant box add newbox http://kthcorp.com/package.box
  • 62. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$ tebica$ vagrant box add newbox http://kthcorp.com/package.box tebica$ vagrant init newbox tebica$ vagrant up tebica$
  • 63. Vagrant로 개발 환경 구성하기 문제 #2, #4 동시 해결 환경이 설치된 box 공유 버전 설정 모두 동일 소프트웨어 다운로드 + 설치 + 설정 1명만
  • 64. Vagrant로 개발 환경 구성하기 미니 개발 상황극 (계속) “VM쓰라고?” “로그인해서 개발해야해?” “내가 쓰는 에디터 쓰고 싶은데!”
  • 65. 거룩한 전쟁 돌발상황 Vim이 최고! 싸우자 SublimeText 2가 대세 구글 행아웃에서 싸우자! 에막스 지옥! 진리의 젯브레인! 이클립스 완전구려!
  • 66. Vagrant로 개발 환경 구성하기 파일 동기화 config.vm.share_folder “v-data”, “/service”, “spring-mvc-showcase” $ vagrant reload
  • 67. Vagrant로 개발 환경 구성하기 파일 동기화 service VM spring-mvc-showcase Host
  • 68. Vagrant로 개발 환경 구성하기 프로젝트는 무사 진행 Vim이 최고! 싸우자 SublimeText 2가 대세 구글 행아웃에서 싸우자! 에막스 지옥! 진리의 젯브레인! 이클립스 완전구려!
  • 69. Vagrant로 개발 환경 구성하기 포트 포워딩 config.vm.forward_port 8080, 8088 $ vagrant reload Outside( Host( VM( :8080( :8088(
  • 70. Vagrant로 개발 환경 구성하기 문제 #3 해결 localhost:8088/spring-mvc-showcase 8088 8080
  • 71. Vagrant로 개발 환경 구성하기 SSH $ vagrant ssh $ ssh vagrant@localhost -p 2222 Outside( Host( VM( :22( :2222(
  • 72. Vagrant로 개발 환경 구성하기 $ git add Vagrantfile $ git commit -m ‘개발 환경 설정’ $ git push
  • 73. Vagrant로 개발 환경 구성하기 서버 OS != 로컬 OS 서버 OS == 로컬 OS 설치 환경 문서로 공유 설치 환경 자체가 공유 소프트웨어 버전 불일치 소프트웨어 버전 전부 일치 개발자마다 개발 환경 구축 설치는 단 한명이! 쓰고 있는 포트 충돌 손쉬운 포트 포워딩
  • 74. Vagrant로 개발 환경 구성하기 $ vagrant destroy
  • 75. Vagrant로 개발 환경 구성하기 “사실은 더 복잡해요”
  • 76. 분산 환경 구성하기 Multi-VM Vagrant::Config.run do |config| config.vm.define :web do |web_config| web_config.vm.box = "web" web_config.vm.forward_port 80, 8080 end config.vm.define :db do |db_config| db_config.vm.box = "db" db_config.vm.forward_port 3306, 3306 end end
  • 77. 분산 환경 구성하기 Host-Only 네트워킹 Vagrant::Config.run do |config| config.vm.define :web do |web_config| web_config.vm.box = "web" web_config.vm.forward_port 80, 8080 web_config.vm.network :hostonly, "10.11.12.13" end config.vm.define :db do |db_config| db_config.vm.box = "db" db_config.vm.forward_port 3306, 3306 db_config.vm.network :hostonly, "10.11.12.14" end end
  • 78. Vagrant 사용 일반적인 사용법 1. box 는 사내 웹서버에 업로드 $ vagrant box add ~ 2. 프로젝트 내에 Vagrantfile을 포함 $ git add Vagrantfile $ git commit -m ‘개발 환경 설정’ 3. Vagrant 사용 $ vagrant up
  • 79. Vagrant 사용 facebook/tornado https://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrantfile
  • 80. 프로비저닝 조금 아쉬워요 소프트웨어 버전 업데이트 box는 이미 배포 완료
  • 81. 프로비저닝 프로비저닝 Image - http://www.scalarium.com/features/automation/
  • 82. 프로비저닝 프로비저닝 config.vm.provision :{provisioner} shell chef puppet
  • 84. Chef 프로비저닝 Chef Server 프로비저닝 VM
  • 85. Chef 프로비저닝 Chef Server 프로비저닝 config.vm.provision :chef_client do |chef| chef.chef_server_url = "http://cocina.kthcorp.com" chef.validation_key_path = "chef/validation.pem" chef.run_list = ["role[baas]"] end
  • 86. Chef 프로비저닝 “Chef 서버 없어도 실망 마세요~”
  • 87. Chef 프로비저닝 Chef Solo 프로비저닝 VM
  • 88. Chef 프로비저닝 Chef Solo 프로비저닝 !"" cookbooks #"" apache2 #"" apt #"" php !"" php_sample config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "php_sample" end https://github.com/curioe/vagrant_sample
  • 90. Vagrant로 VM을 관리하자 Vagrant 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
  • 93. vagrant up 프로젝트에 새 동료가 참여할 때
  • 95. vagrant up 서버와 동일한 개발 환경을 꾸미기 위해
  • 97. 감사합니다. 개발실 / 기술전략팀 / 강소리 curioe@kthcorp.com @curioe
  • 98. 고마워요, 레퍼런스 레퍼런스 https://speakerdeck.com/mitchellh/develop-and-test-configuration- management-scripts-with-vagrant https://speakerdeck.com/u/lewg/p/consistent-local-development- with-vagrant-and-chef