Monthly Archives: October 2019

Process Manager

불안정한 쩌리랭기지들을 위한 도구

python, node, ruby

Unicorn

개발 언어 : ruby
https://github.com/phusion/unicorn

Forever

개발 언어 : nodejs
https://github.com/foreversd/forever

pm2

개발 언어 : nodejs
https://github.com/Unitech/pm2
nodejs, python

supervisord

개발 언어 : python
http://supervisord.org
https://github.com/Supervisor/supervisor

pman

개발 언어 : python
https://github.com/FNNDSC/pman

ptop

개발 언어 : python
https://github.com/darxtrix/ptop

php-pm

개발 언어 : php
https://github.com/php-pm/php-pm

MongoDB 4.0 to AWS DocumentDB 3.6 migration 기록

mysql, aurora정도로 호환되는 제품인 줄 알았는데

스펙을 보니 다른점이 상당히 많다.
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/mongo-apis.html
아니요가 너무 많은거 아니요?

처음 접속할 때 부터 애를 먹었다. public access가 안된다고???

AWS의 불친절함이란.. .어디 잘 써 있지도 않고

루비온레일즈 개발자가 AWS를 설계했으면 이렇지 않았을텐데
(친절한 루비의 에러메시지)

공식 문서에서 시키는대로 한 것 같은데 접속이 안되서 인증서 사용을 중지시키고 접속했다
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

쓰는 사람이 없는건지 검색도 잘 안되는군

AWS 직원새끼도 이거 안쓰는거 아닐까

파라미터 그룹에서 TLS를 끄고 겨우 접속은 했는데

admin으로 접속이 안되네?

test로 접속해봤더니 된다

그 다음에 test2로 접속했더니 된다

근데 test2로 접속하면 test1이 아show dbs부터 안먹힌다??

아니군 데이터가 있는 디비만 목록에 뜬다

이래저래 하다가 너무 이상한 것 같아서 포기..

결국은 몽고디비를 설치해서 사용

그래도 직접 구성은 안 하고 aws에서 지원 해 주는 cloud formation을 활용했다
https://docs.aws.amazon.com/ko_kr/quickstart/latest/mongodb/step2.html

그냥 실행했더니 실패???왜??

바로 클릭해서 접속했떠니 북부 버지니아로 접속되는군.. 어째 이상하더라고
aws 콘솔에서 안 쓰는 리전 꺼놓는 기능은 언제 나올건가

그러고보면 aws에서 대부분의 관리 기능들이 cloud formation을 확장한 정도 기능 아닐까 싶을 정도로.. 비슷한 프로세스로 돌아가는 것 같다.

ui를 따로 만들어주면 관리형 서비스가 돼 버리는거겠지

docuemntDB를 갖다버리고 mongoDB를 관리형으로 넣어주는건 어떨까

하려다가 다시 DocumentDB를 사용하기로

설치가 어려운건 아니지만 나중에 관리비용도 상당히 있으니까

그리고 기존 어플리케이션(node-mongoose)을 돌려보니까 별 문제없이 돌아간다. 4.0에 특화된 기능을 쓰는게 없어서 그런가?

백업 덤프에서 버전을 안 맞췄더니 아예 안된다. 에러메시지가 버전이 안맞다가 아니라 이상한게 안된다고 해서 한참을 검색을 했는데… 버전문제였다.
mongodump(4.x) – mongorestore(3.6)

docker 덕분에 간단히 해결됐다.
docker run –rm -it -v $(pwd):/mongobak mongo:3 mongodump –out /mongobak –host x.x.x.x -uUser -pPass –db dbname

버전이 안맞아서 인덱스나 뭐가 날라갈 수 도 있다고 하는데 나중에 생성 해 주면 되지 않을까

몽고디비 툴 사용

몽고해커 http://tylerbrock.github.io/mongo-hacker/
http://mongodb-tools.com/

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

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