Tmux – 환경저장 도우미툴 – teamocil, tmuxinator

tmux

요즘엔 터미널이 좋아져서 tmux를 쓸 일이 잘 없는데

아래 툴을 사용하면
대여섯개 로그를 같이 보거나 자주쓰는 환경을 반복적으로 입력하는 경우에
자주쓰는 환경을 저장 해 놨다가 사용할 수 있다.
ex)

  1. Docker – db, web, gw, …등등 실행 후 로그보기
  2. ssh 접속 – 서버1,2,3,4,5 로그보기

tmux 보조툴

  • teamocil : https://github.com/remi/teamocil (개발중단)
  • tmuxinator : https://github.com/tmuxinator/tmuxinator

사용법 (은 자세히 보려면 깃헙으로 이동)

app.ym을 미리 만들어서 ~/.teamocil/app.yml에 넣고
teamocil app
이라고 치면 미리 정의한 환경이 실행된다

오류 발생

여태까지 teamocil을 잘 쓰고 있었는데 tmux가 버전업되면서 오류가 난다고 한다.

no server running on /private/tmp/tmux-501/default

이런 에러메시지가 나오는데
따지고 보면 tmux 문제다. tmux 서버를 미리 실행시켜놓고 하면 되긴된다.

tmux list-setssion을 쳤을 때 서버가 실행중이 아니라면 서버가 실행중이 아니라는 메시지가 떠야지 그지같은 소리 나오는건 tmux문제지
tmux start-server - tmux list-sesstion 해도 마찬가지로 위의 메시지가 뜬다.

tmux가 이상하지만
tmux가 갑이다.
보조툴이 알아서 기어야한다.

teamocil은 개발자가 혼자 관리하는 것 같은데
개발중단되고 pull request나 issue도 확인이 안된지 몇년이 됐다.
업데이트가 되는 tmuxinator를 쓰자.

아직까지는 tmuxinato도 같은 오류가 발생하고 있지만
고쳐지지 않을까

tmuxinator도 설정파일은 유사해서 기존 환경 변경하는게 어렵진 않겠다.

DevOps 환경별 구분

개발 및 배포 단계

  • Dev,Devel,Development – 개발자 개발중
  • QA,Alpha – QA자 QA중
  • PreProduction,Staging – 라이브자 라이브전
  • Live,Real,Production – 라이브자 라이브중

서버의 성격/위치

  • 개발자 본인 장비 – 개인용
  • 공동 관리하는 서버 – 사무실 서버,IDC,Cloud
  • 서비스 서버 – IDC,Cloud

세분화된 개발환경 구분

  • Dev Local Mock – 한개 서비스에서 연동서비스는 Mock 데이터
  • Dev Local/Remote Integration – 개발용 인프라에 연동서비스 함께
  • Test Remote Feature – 특정 기능 요소별로 테스트가능한 환경
  • Test Remote QA – QA 및 업무담당자 테스트환경 (수동 및 자동)
  • Live Remote Pre-Production – Production의 데이터까지 복제해서 만든 환경에 배포 결제 등 외부서비스 Real 연동
  • Live Remote Production – 실제 서비스 환경

테스트 종류

  • Manual Test
  • Unit Test
    • Mock API
    • Mock Data
  • Dev Integration Test
    • Real API
    • Seed Data
  • Live Integration Test
    • Real API
    • Real Data
  • Health Check

테스트 방법

  • Manual
  • Script

단계 구분

  1. Dev
    1. Local Dev Unit Test(Automatic)
    2. Local Dev Integration Test(Automatic)
    3. Git push – dev
    4. CI Build Unit Test
    5. Remote Dev Integration Test(Manual)
  2. Test
    1. Feature Test
    2. QA Test
    3. Success/Fail
  3. Live
    1. Pre-Production Test
    2. Production

현재까지의 순서

Terraform – AWS 사용 후기

사용법은 매우 간단해서 몇 시간 삽질해보면 금방 익힐 수 있는 수준

그래도 tutorial은 필요해 보인다

  • install terraform
  • provider
  • terraform init
  • vpc, subnet, ec2, rds 작성
  • terraform plan
  • terraform apply
  • terraform destroy

세부적인 부분은 도큐먼트가 잘 나와있어서 검색하면서 추가하면 될 것 같다
https://www.terraform.io/docs/providers/aws

웹 콘솔을 켜놓고 확인하면서 돌려봤는데 의도한 대로 잘 만들어지는 편이다.

좀 힘들다 싶으면 기존 웹콘솔로 설정을 한 다음에 떠다가 써도 될 것 같다
https://github.com/dtan4/terraforming
cloud formation도 복잡한 설정은 이런식으로 하는게 편했는데

cloud formation을 사용하지 않고 로컬에 .tfstate파일에 서버 상태를 저장한다

이걸 git에 저장 해 놓고 관리해야 하는데

.tfstate를 ignore 하라고 돼 있다. 어째야하는거지?

상태값은 git에 올리지 말고 별도로 관리하라는건가?

서버에 상태값이 명확히 관리되지 않는다면 그리고 aws 콘솔에서 인프라를 수정해서 state파일과 값이 맞지 않게 되는경우 문제가 발생할 가능성이 있어 보인다.
이건 cloud formation에서도 마찬가지였지만

코드화를 하려면 격리수준을 잘 잡아놔야 할 것 같다.

vpc단계, 태그, organization 등등 여러 방법이 있겠지만…

Organization을 아예 서비스별로 분리해서관리하면 문제가 발생할 여지가 작아질 것 같다.
terraform destroy가 company destroy가 되지 않도록 하는 안전장치도 별도로 마련해야 할 것 같고

~~

CloudFormation은 Provider에 따라
* Mailgun
* AWS
* Docker
* Github
* Yandex
* Helm
* Trello
* Tumblr

별 쓸데없는것까지 다 할 수 있는 것 같다.
요즘엔 클라우드 엔지니어도 아닌데 인프라만 너무 만지는거 아닌가