Orchestration Infra

설치형

  • Kubernetes https://github.com/kubernetes/kubernetes
  • Docker swarm https://github.com/docker/swarm
  • rancher https://github.com/rancher/rancher
  • flynn https://github.com/flynn
  • mesos https://github.com/mesos/mesos
  • nomad https://github.com/hashicorp/nomad

SaaS

  • AWS ECS
  • GCP
  • AWS
  • Azure
  • Heroku

서비스형으로 쓰면 되는데 또 설치 해 보고싶고 그러면 Docker Swarm정도는 해볼만할 것 같다

Helm 2에서 3로 간략

Tiller 없어짐

  • Tiller가 k8s 클러스터에서 에이전트 서버 역할을 했는데 이게 없어지고 단순 클라이언트에서 접속하는 구조로 변경
  • 보안을 사용자가 알아서 하라는거 보니 이거 관련 보안문제가 터졌나봄
  • tiller 초기화하려고 필요했던 helm init, helm home 없어짐

차트 리포지터리 검색

로컬과 helm hub 모두 동작? 항상 웹으로 찾아가지고 몰랐던 부분

의존성관리

Chart.yaml에서 의존성 관리. requirements.yaml을 포함. 용어도 변경 requirements -> dependencies
helm2 하위호환 보장
차트의 type 추가 – application / library

주요 명령어 기능변화

uninstall 하면 기본값이 purge라던가… helm2까지 많이 사용하던 사람 아니면 관심가질 필요 없는 내용.. 어차피 쓰다보면 알게되는

Synology NAS – 사용후기 – 누구에게도 필요없는 물건

신세계라고?

모르겠다
충동구매로 지른 후 몇달인가 1년쯤 됐나?
지금 설정 해 놓은게…

  • DNS
  • VPN
  • Cloud 백업
  • 디스크
  • 사진
  • 동영상
  • 다운로드
  • Docker
    • 블로그
    • gitlab
    • nexus
    • 등등 개발용툴

기존에는 개인서버에서 docker-compose로 실행시키면 별로 손가는 일도 없었다
오히려 코드화가 힘든 synology nas가 설정에 더 손이 많이 가는 느낌?
장점은 저전력에 크기가 작고 raid 지원이 잘 된다는 점 정도일까
요즘 폐급 메인보드도 소프트웨어raid 정도는 지원되고 raid0(mirror)은 컨트롤러 없어도 잘 터지지는 않으니까 상관없지 않나. 앵간한 폐급 피씨 주서다 셋팅해도 synology nas보다 빠르고

718이랑 하드두개 해서 거의 100만원을 쓴 것 같은데 왜 샀나 모르겠다. 그냥 미쳤나보다

비교

클라우드, NAS, 개인서버

솔직히 NAS도 관리하는게 손이 꽤 많이 가고 쉽지가 않다.
어차피 공부해서 할 생각이라면 개인서버 쓰는게 낫고
편하게 쓰려면 클라우드 쓰는게 낫다.

iCloud 기준
5G 무료
50G 1100원/월
200Gb 3300/월 (가족)
2TB 11,100/월 (가족)

GoPro Plus
무한용량?? $ 4.99/월

Dropbox
2TB $9.99/월

SynologyNAS 718+ 기준
45만 + 30만(4TB*2) + 램추가(8G 5만)
전기요금 누진세포함 대강 5천추가
수명3년으로 잡고 2.7 만/월
너무 비싸서….다시
수명5년으로 잡고 1.3 만/월

용량차이 좀 감안해도 NAS보단 클라우드 쓰는게 나아보인다.
자주 안 쓰는 데이터만 BlueRay나 HDD에 담아두면 기본요금만 써 되독

클라우드 쓰다가 날라가면 어쩌냐고 하기도 하는데
집에쓰는 하드도 잘 날라간다

클라우드는 비싸다고 하는데
100만원+전기요금 5천원추가정도 생각하면 큰 차이없지 않나

가용성도
드랍박스 중단되는거 뉴스에 뜨기도 하고 하지만
집에 인터넷 끊기거나 기계 고장나거나 정전나는건 뉴스에안나오지만 훨씬 자주 발생한다

tvheaden인가 뭐 이런거 쓰려면…
어차피 Synology nas 스펙이 구려서 힘들다

동영상을 온라인으로 올려놓고 보고싶다면
Synology 스펙구려서 힘들다
개인서버 돌리고 오픈소스로 나온거 설치해서 쓰는게 낫지 않을까
Dropbox나 iCloud에서 지원도 될 것 같다

파일공유
Nextcloud로 해도 된다

단점나열

  • 업데이트가 은근 느린 포인트가 많다
    letsencrypt 적용해야되는데 *.주소 지원이 아직도 안된다. 작년부터 계획중
    node4로 돌아가는 앱이 아직도 있네? package 업데이트가 안되서 생긴문제
  • 중요 기능은 ssh접속해서 해야된다
    개씨발포인트 – 디렉토리 구조나 권한설정도 지좆대로 되어 있는걸 건드리려니 더 힘들다
  • 기존서버운영방식을 모르면 Synology도 못한다
    쉽게따라하기 메뉴같은거 전혀 없다.. 어차피 이거나 저거나 공부하면서 해야됨
  • 저가형제품에서 할수있는게 없음
  • 전송속도 느림
  • 비슷한 유틸 엄청많아서 헷갈림
  • package를 직접 만들어 쓰려고 봐도 이거 손댈 수 있는 구조가 아니고 정보제공도 안됨

결론은

Synology에서 제공하는 다양한 기능을 사용하려면 쓰는것도 괜찮았었었었다
Docker가 나오기 전까지는
요즘은 그냥 버리는 서버에 NAS용하드 두개 사다가 레이드걸고 쓰는게 낫다.

복잡한 설정 못할 것 같으면 그냥 cloud서비스 iCloud, GoogleCloud, Dropbox, naverCloud, 통신사클라우드 대강 골라서 쓰면된다. 하드한개 사서 백업을 하던가 안해도 되고

이거 고장나거나 느려지면 다시 사진 않을 것 같다

로그 모니터링 서비스

클라우드 서비스 내장형

문제는 다 느리다는거

  • AWS CloudWatch
  • GCP

서비스형서비스

  • new relic
  • sentry
  • datadog
  • logic monitor
  • dynatrace
  • appotics

오픈소스 설치형 서비스

오픈소스 아니거나 한것들 섞여있을 수 있음
완전체 서비스는 아니고 생태계에 포함된것들 포함

  • prometheus
  • logstash
  • flume
  • kafka
  • fluentd
  • elasticsearch

~

개인적으로 센트리는 써봤는데 다른건 잘 모르겠지만 비슷할 것 같다.
센트리가 레일즈에서는 로그 확인하기 편하고 좋았는데 노드에서 잘 잡아내지 못하는 것 같다. 여기 맞춰서 뭔가 설정을 해 줘야하는듯

마이크로서비스 환경이 되면서 동일한 애플리케이션 서버가 여러개 구동되니까 점점 더 필요해지는 시스템

시간내서 구축해야하는데 그전까지 유료서비스 사용하는것도 괜찮은듯

네티스 WF2411V2 펌웨어 업그레이드 1.4.xx -> 1.8.xx

사전준비

제품명 확인 펌웨어 다운로드
1.6.99
1.8.25(최신)

1.6 이하버전인 경우 처리 순서

  1. 공장초기화
    전원 뺐다가 켜고 7초이상 초기화 버튼 누르면 모든버튼이 깜빡일 때 손 떼고 1분쯤 대기
  2. 1.6.99 업그레이드
    192.168.1.1 고급설정 파일로 업그레이드
  3. 공장초기화
  4. 1.8.25 업그레이드

1.6이상버전인 경우 처리순서

이건 정확하진 않은데

  1. 공장초기화
  2. 1.8.25 설치

1.6이하 버전에서 최신버전인 1.8로 업그레이드가 바로 되지 않는다. UI와 내부 시스템 대규모 변화가 있었던 듯
공홈에 설명이 제대로 안나오고 어디 구석에 PDF로 띡 나와있어서 두시간 날려먹음
바퀴벌레 날라다니는 UI가 보인다면 1.6이상이다

Serverless Framework 선택

serverless

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

zappa

python

django, flask 앱을 lambda로

zpex

AWS sam

jets

ruby

Graal

kotlin

  • https://github.com/razvn/micronaut-kotlin-first-graal
  • https://guides.micronaut.io/micronaut-function-graalvm-aws-lambda-gateway/guide/index.html

Spring cloud function

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

인프라

AWS Lambd

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/

기타

  • kubeless
  • OpenWhisk
  • Tencent Cloud
  • Alibaba Cloud
  • Azure
  • CloudFlare
  • fn??
  • spotinst

참고

프레임웤?툴? 엄청많음

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이나 파이썬 코드인 것 같다

람다는 쉽다며 씨발

개삽질 기간포함 일주일 좀 넘게 걸린 것 같다.

1단계 Go로 HelloWorld

처음엔 go언어 이용해서 간단하게

2단계 외부연동 GW

GW설정을 해야되는군… 뭐가 씨발 되다말다 하고
DTO구성을 바꿔줬다

3단계 RDS 연결

같은 VPC를 써야하는군..
iam인증을 쓰면 커넥션 생성속도가 느리다고?
타임아웃은 왜 계속 나오는거지
vpc에서 시큐디티 그룹을 연결시켜줘야 하는군
아이피는 왜 자꾸 변하는데… vpc전역(172.1.0.0/16)을 오픈 해 놔야하는건가
커넥션 풀은 어떻게 하지? 일단 패스

4단계 SNS 호출

제대로 한 것 가튼데
로컬에서 호출이 되는데
아 왜 안되지
머리가 마비된다
event trigget – sns to lambda는 많은데 lambda to sns자료는 잘 없다.
엔드포인트 생성(https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpce-interface.html)
(https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-vpc-endpoint.html)

셋팅하고나서 좀 있으면… 된다.

Object Storage 비교 – minio, ceph …

용도

예전에는 서버를 여러개 띄우면 /upload 경로에 nas를 마운트해서 사용했을거다.
요즘은 앱 배포시 서버리스나 컨테이너를 많이 사용하면서 서버에 직접 파일을 업로드 하는경우가 더 없어져서 스토리지를 별도로 사용해야 한다.

덤으로 대용량 로그파일도 저장하고 빅데이터 분석플랫폼에서 쉽게 가져와서 돌릴 수도 있다.

종류

  • 설치형
    • minio
      (https://www.minio.io)
    • ceph
      (https://ceph.com)
    • Red Hat OpenShift
      (https://www.redhat.com/ko/technologies/cloud-computing/openshift-container-storage)
    • HDFS
      하둡 파일시스템
    • infinit storage
      ??망했나
  • 클라우드 On demand
    • gcs(Google Cloud Storage)
    • aws(s3)

용도도 각각 다르고 성능도 다르고 해서 아무데나 막 쓸 수는 없다.
대강 써도 어느정도 성능은 나오긴 할텐데
아직 기술이 초기라서 그런지 딱히 좋은 자료가 안 보인다.

선택

minio, ceph 중에 하나를 쓸 것 같다.
성능이야 다 개선되고 있는 중이고 서로 다 좋다고 하니 써 봐야 알 것 같다.
일단 쓰기 편한건 두가지다.
용도는

  • 로그파일 저장
  • 이미지 업로드, 파일업로드 백엔드

minio는 설치가 편하다. docker 기반으로 실행도 가능.
ceph는 엔터프라이즈 서비스에서도 적용사례가 있는 것 같다. 설치는 조금 더 복잡할 것 같다.

어차피 개발중이니 minio를 먼저 써 보고 문제가 생기면 검토 해 보는걸로