Serverless Framework 선택

serverless
https://serverless.com/cli/
https://github.com/serverless/serverless

zappa

zpex

AWS sam

Spring cloud function
https://medium.com/faun/spring-cloud-function-deploy-first-serverless-function-using-spring-1bbdc0a4620d

인프라

AWS Lambda

GCP cloud function
https://cloud.google.com/functions/

Knative
https://github.com/triggermesh/knative-lambda-runtime
https://about.gitlab.com/product/serverless/
https://labs.sogeti.com/knative-introduction-to-a-native-serverless-platform/

참고

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

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

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

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

IaC, Infra as Code – 인프라를 코드로 관리

클라우드로 넘어오면서 관심이 커진 분야

서버 프로비저닝 기술

  • Chef
  • Ansible
    클라이언트에 에이전트 설치 없이 원격으로 설치를 해 준다는 장점
  • Puppet
  • Saltstack
  • Packer
  • Groovy Infrastructure

요즘은 잘 안쓰는 설치 프로비저닝

SE를 안해봐서 모르겠지만.. 서버관리 하는 사람들은 이런거 USB 만들어서 들고다니지 않았을까
https://www.cyberciti.biz/tips/server-provisioning-software.html

  • Kickstart
  • FAI, Fully Automatic Installation
  • Cobbler
  • Spacewalk
  • OpenQRM
  • Foreman

클라우드 코드화(설정)

  • AWC Cloud Formation
    이건 그냥은 거의 못쓴다고 보면 된다
    AWS CDK를 활용
  • GCP – yaml
    따로 이름도 없는 것 같은데 구조가 잘 잡혀있어서 읽기 쉽고 재활용도 쉽다
  • Terraform
    클라우드 서버 인프라 뿐 아니라.. 여러가지 provider를 사용하면 github 설정도 코드화할 수 있다
  • 기타 ansible, chef 등에서 제공하는것들.. 플러그인 형태로 추가하면 되는 것 같은데 주류는 아닌 듯 싶다

클라우드 코드화(SDK)

  • AWS CDK
  • python boto
  • aws-sdk-rails

~

개인적으로 DSL형태의 설정을 좋아해서
Ruby계열 언어를 사용하는 프로그램이 많아지면 좋겠는데
대세는 yaml이나 파이썬 코드인 것 같다

윈도우 작업용 피씨

오픈쏘쓰

https://github.com/microsoft/windows-dev-box-setup-scripts

설치

윈도우 앱스토어

여긴 자동화가 되나 모르겠다 수동으로 클릭

OneNote
Slack
Arduino IDE
Ubuntu
Ubuntu 18.04 LTS
WIndowsTerminal (Preview)
Terminus – SSH client
DBeaver CE
NuGet Package Explorer
Microsoft Edge DevTools Preview
MQTTBox

Chocolatey ( https://chocolatey.org/ )

윈도우+x – a
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))

choco install -y `
googlechrome `
firefox `
ccleaner `
notion `
filezilla `
hostman `
bandizip `
notepadplusplus `
vscode `
atom `
gimp `
inkscape `
packer `
googledrive `
dolphin `
ninja `
openoffice `
mysql.workbench `
pgadmin3 `
gow `
cygwin `
cyg-get `
wsltty `
msys2

choco install microsoft-windows-terminal
# notepadplusplus.install \ # marketplace
# autohotkey.portable \ # scoop
# teamviewer \ # 안써서
# virtualbox \ # hyperv
# virtualbox-guest-additions-guest.install # hyperv
# docker \
# minikube \
# vscode \ # scoop
# nuget.commandline \ # scoop???
slack \ # marketplace

Babun ( http://babun.github.io/ )

개발중단..

pact install tmux

Scoop ( https://scoop.sh )

Babun에서는 안쓰는게 좋을것같고 윈도우+x – i

scoop install -g `
7zip `
git `
gzip `
less `
nano `
sed `
curl `
grep
scoop bucket add java
scoop install jdk8
scoop bucket add extra
scoop install nvm
scoop install vagrant docker docker-compose
vagrant
nvm
scoop install `
adb `
android-sdk `
eksctl `
aws-iam-authenticator `
aws `
aws-vault `
erlang `
flyway `
go `
gcloud `
ghostwriter `
github `
gradle `
grails `
graphviz `
groovy `
haskell `
kotlin `
kubectl `
lua-for-windows `
maven `
minikube `
mono `
nvm `
perl `
putty `
r `
sbt `
scala `
vagrant

scoop install  
jetbrains-toolbox `
wireshark `
winscp `
hostsman `
postman `
foobar2000 `
rufus

# 그냥 수동설치
# android-sdk
# flutter

강화 PowerShell (oh-my-posh)

https://github.com/JanDeDobbeleer/oh-my-posh

scoop install conemu
scoop install conemu-color-themes
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster
# https://github.com/gluons/powershell-git-aliases
Install-Module git-aliases -Scope CurrentUser -AllowClobber
# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-6
# All Users, All Hosts
 $PSHOME\Profile.ps1
# All Users, Current Host
 $PSHOME\Microsoft.PowerShell_profile.ps1
# Current User, All Hosts
 $Home\[My ]Documents\PowerShell\Profile.ps1
# Current user, Current Host
 $Home\[My ]Documents\PowerShell\
Microsoft.PowerShell_profile.ps1

# 위에거 다 안되고 아래걸로. 원드라이브 Documents가 따로 잡혀있으면 거기로
# $Home\[My ]Documents\WindowsPowerShell\
Profile.ps1 
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox
Import-Module git-aliases -DisableNameChecking

미확인

noobs-term ( https://noobs-term.com/ )

가상환경

virtualbox는 같은 vagrant 소스로 리눅스 맥에서도 사용가능
그래도 윈도우에서는 hyperv쓰는게 편하긴한데
https://stefanscherer.github.io/how-to-install-docker-the-chocolatey-way/

VirtualBox

choco install -y `
virtualbox `
docker-toolbox

Hyper-V

https://docs.microsoft.com/ko-kr/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
choco install -y docker-desktop docker-kitematic

추가설치

scoop install `
vagrant minikube kubectl`

https://github.com/hashicorp/vagrant/wiki/Available-Vagrant-Plugins

vagrant plugins install `
sahara `
vagrant-aws-dns `
rubber

카프카 기술서 두권 비교

아파치 카프카로 데이터 스트리밍 애플리케이션 제작 – 에이콘

카프카에 대해서 개괄적으로 나와 있기는 한데 정리가 깔끔하지는 않다

훑어보기는 괜찮다

그런데… 이 책이 더 좋은 것 같다

~~~

기술만 훑어보려고 하는거면 1~2단원만 보면 될 것 같고 자세히 보려면 좀 오래걸릴 것 같다.
코드랑 기술이 상세하게 설명 돼 있어서 더 그런것같은데..

메시지 전송 기술에서 카프카가 거의 표준으로 자리잡아서 다른걸 생각하기가 힘들 정도다
복잡한 라우팅을 하는 경우에 AMQP를 쓴다고는 하지만… AMQP에서 지원되는 케이스를 생각 해 봐도 카프카에서도 다 할 수가 있을 것 같다

예전에 금융사 SMS처리하는 프로젝트에서 사람들 mysql가지고 개삽푸는거 본 적이 있는데
내가 들어갔으면 메시지 서비스로 하지 않았을까 싶은데…
그 때는 rabbitmq를 선택하지 않았을까?? 카프카의 특성을 제대로 모르고 있어서..
당시에는 문서도 잘 안나와있어서 좀 골치아프기도 했다.
요새는 번역서도 나와있어서 사용하기 좋은 것 같다

끝으로 최근.. 아파치에서 카프카의 경쟁 시스템이 출현했다는 슬픈소식

Apache Pulsar