AWS – 세계에서 가장 머대리 클라우드

없었으면 더 좋았을 eksctl

eks는 사회악이다.
잘못 만들어진 툴은 없느니만 못하다
이딴게 있으면 다른게 만들어질 여지조차 막아버리니까

eksctl이 없으면 다른방향으로 de facto가 생겼을텐데

aws의 대부분이 널리 사용되고 기능많은 애매한 실패작이다
소니-애플로 이어지는 심플하고 쓰기좋은 제품군이 나오기 전의
복잡한 툴을 보는 느낌이다

오동작은 하지 않는다

클라우드의 아이폰은 뭘까

aws cli로 하면 될 것 같은데 애매하게 cloud formation을 만들어내는 eksctl 때문에 cli기능이나 다른 프로비저닝 툴이 활성화가 덜 됐다.

AWS의 대머리 메시지

You do not have permission to access the specified resource

eni를 지우려는데 이상한 소리를 하면서 안 지워진다

검색하다 보니 누구는 EB가 누구는 lambda가 남아있어서 그렇다고 한다.
lambda에서 생성한건 다른데서 삭제가 안된다고?

씨이발 그럼 어디어디 지워야할지 알려주던가
루트계정으로 들어갔는데 권한이 없다니

iam복잡하게 만들려다가 다 망쳐먹은듯

내 경우에는 rds가 생성 돼 있어서 삭제가 안됐었다

nextcloud, 분노, helm, homeserver

홈서버운영한지 xx년차 – k3s서버 helm으로 관리하면서 열받아서

  1. 쌩으로 설치해서 쓰다가
  2. docker-compose로 쓰다가
  3. docker swarm으로 쓰다가
  4. k3s로 쓰는중인데

1,2,3은 다 좋았는데 k3s로 가면서 문제가 많이 생긴다
애플리케이션 그냥 실행시키던 시대엔 대부분 php라서 apache에 연결해서 실행시켰고
자바계열은 ajp연결했고

Docker는 가장 편했다. 이미지도 대부분 잘 만들어져 있어서 env만 잘 넣으면 실행이 됐다.
간혹 volume으로 설정파일을 넣어야 하는 경우가 있긴하다..
이걸 docker-compose로 만들고 apache, nginx로 vhost라우팅

docker-swarm도 traefik연결하는게 좀 삽질이 심했지만 안정화 이후엔 편안했다

K3s 문제들

ingress

ingress는 복잡하고 어렵긴한데 익숙해지면 어떻게든 할만하다

이상하지는 않다.

차트의 문제

helm차트는 좀처럼 쓸만한게 없다.
artifact.io에서 검색해서 쓰는데 얼마 나오지도 않고
오피셜도 제대로 안 돌아가는게 많다.

bitnami가 그나마 나은편이데 중간중간 함정이 있다.
잘 안된다싶으면 내가 잘못한게 아니고 차트가 잘못됐음을 빨리 인정하고 다른걸 찾던가 새로 만들거나 적당히 고쳐 써야야한다

Docker 함정 빈도가 10%정도라면
Helm은 함정 빈도가 30%정도 된다

helm의 기능문제

차트가 완벽하면 좋은데 다 조금씩 모지란 새끼들이다
그렇다고 완전히 새로 만들기는 시간이 너무 낭비되고 조금만 고쳐 쓰고싶다

잘못된 telmplate파일만 오버라이딩해서 쓸 수 있으면 좋겠는데 그런건 지원되지 않는다.

오버라이딩이 되어야오피셜 차트버전업 혜택을 보면서 나한테 맞게 커스터마이징 해서 쓸 수 있는데… 아예 복붙해서 만들거나 대강 알아서 써야한다.

해결방법으로 겨우 만든게

helmsman으로 하위디렉토리에 차트를 넣고

/chart.d
  /nginx
  /nextcloud
  /postgres
chart_override.d/
  /nginx
  /nextcloud
  /postgres
helmfile.yaml
init.sh

이런식으로 놓고 init.sh를 실행할 때 마다 chart를 새로 받아서 chart.d에 압축을 풀고
chart_override 디렉토리에서 그냥 덮어씌워 복사하게 만들어서 썼는데
잘 되긴하는데… 뭔가 기분나빠서 관뒀다

덮어씌우기 복사하는거라서 잘못된 파일을 빼는건 안된다.
빈 파일로 덮어띄우던가 삭제하는건 따로 만들어야할듯

문제의 차트 nextcloud helm

설정이 중간중간 잘못 돼 있다
values.yaml만 가지고 모든걸 컨트롤 하려다보니 이런 문제가 발생하지 않았을까

helm차트를 bitnami, truechart등 한곳에서 여러개를 만들다 보니
공통패턴으로 활용하는데 과도하게 집착하는 것 같고…
그것때문에 오류가 나는 경우가 조금 보인다

helm도 깔끔하게 상당부분 수동으로 하도록 해야한다.
어차피 개별 오픈소스 도커이미지가 제각각이라 별 수 없고 공통적인 설정같은건 불가능하다

결국 환경변수 도 이런식으로 제각각이잖아
MYSQL_DATABASE, POSTGRES_DB

deployment.yaml만 수정하니 쓸만해졌다
설정파일을 사용하는 버전으로 완전 수정할까 했는데
그냥 잘 되서 그만뒀다

결론

helm차트에서 뭔가 잘 안되면 folk해서 적당히 수정해서 써야한다.

굉장히 높은 확률로 내가 잘못한게 아니라 차트가 잘못됐다.

도커이미지는 그나마 오피셜로 관리가 되는데 helm은 뭔가 애매하다.
예전 ansible이나 chef마냥 버전지원이 제대로 안되는 느낌..
예전에 ansible, chef와 비슷하다. 차트(레시피)를 바닥부터 다 새로 만들어야될 정도로 공개된 것 중에 쓸만한게 없었다. 때마침 컨테이너 기술이 활성화 되기도 했고

직접 구축하기 vs 돈내고 쓰기

이성적으로는 돈 내고 쓰면서 빠르게 개발하는게 낫다는걸 알지만
하나하나 구축하려는 욕심이 든다
적정기준을 정해놓고 따르는게 좋을 것 같은데

서비스 구축을 하면서 사용해야 하는 서비스가 몇가지 있는데

  • 인프라
    • 그냥 서버.. linux, unix, windwos ..
    • k8s cluster
    • object storage
    • cdn
  • DevOps
    • 빌드
    • 배포
  • Logging & 모니터링
    • 로그수집
    • 모니터링
    • 알림

구축하는데 들어가는 비용이 이익을 상회하지 않는 경우
비용: 시간, 돈, 인력
이익: 만족감, 기술발전, 속도, 돈

비교

인프라

IDC에 서버 올려서 직접 구축하면 제일 싸긴하다… 효율적으로 사용할 수 없다.
초기비용이 크고 서버 관리하는 기술도 생각보다 어렵고
경험이 없으면 삽질을 엄청 많이 하게 된다
코드만 만지던 사람들이 생각도 못한 변수가…

그리고 서버를 코드화 할 수 없으면 곤란한 상황이 많이 발생한다.
메이저 클라우드 업체를 쓰면 서버를 완전 코드화할 수 있다.

  • AWS
  • GCP
  • Azure
  • Heroku

서버만 쓸 수도 있지만 클러스터까지 쓸 수도 있고

  • k8s
  • ecs

네이버 클라우드 등 국내 서비스는 안됨. XXX

CDN, ObjectStorage는 클라우드플레어 등 다른 회사를 써도 되고 메이저 클라우드를 써도 되는데 다 코드화가 가능하다.
코드화가 가능하면 인프라 구축이 매우 쉬워진다.
SI도 아닌데 한번 구축하면 끝이지 왜 환경을 재현해야 하냐고???? 하는 경우가 있는데

  • CloudFlare

인프라 코드화의 장점

  • 테스트 환경 구축: production 환경에
  • 서비스 확장이 간편: 인프라 규모를 확장할 때 오류 가능성이 낮다.
  • 테스트 자동화가

DevOps

위에 있는거에서 DevOps는 코드화 해서 쉽게 할 수 있고
githubaction같은 무료서비스도 많으니 그냥 써도 된다. 서버를 직접구축하면 조금 더 빠르긴한데 취향에 따라 마음대로 해도 되는 부분…
아직 돈내고 써서 엄청 좋아지는 서비스가 없다

  • kustomize
  • gitops
  • githubaction
  • gitlabaction?
  • drone
  • argocd
  • keel

로깅 & 모니터링

hadoop, elastic search, prometheus 거의 이 중 한쪽 생태계와 주변기술 아닐까

구축하는게 튜토리얼대로 하면 금방 할 수 있기도 한데…
서비스에 맞게 튜닝을 하려면 신경쓸게 많다.
생각보다 잘 안되는 편

어떻게 보면 진짜 비핵심적인 부분이기도 해서
진짜 필요한 부분에서는 직접 로그를 DB에 저장하던지 하고
전체적으로는 돈내고 써야하는 분야

sentry, datadog, … 등등 검색하면 많다

클라우드에서 기본 제공해주는 서비스는 대부분 ES, Hadoop 기반이고
커스터마이징이 불편해서 별도로 작업이 많이 필요하다.

NAS,홈오피스 – OS,솔루션

NAS 솔루션

  • NextCloud
  • https://www.openmediavault.org
  • http://rockstor.com
  • https://www.amahi.org
  • https://lime-technology.com

NAS 인프라, NAS 서비스 섞여있음

OS

  • www.nas4free.org
  • FreeNAS https://www.freenas.org
  • http://rockstor.com/

홈오피스

  • www.zentyal.org
  • NethServer https://www.nethserver.org

Media

  • https://www.amahi.org/

인프라

  • https://www.pfsense.org/

FPGA

재미있는걸 알게되서 조금 조사 해 봤다

개념

  • https://ko.wikipedia.org/wiki/FPGA
  • https://namu.wiki/w/FPGA

코딩이 가능한 임베디드 장비로 ASIC이 특정목적에 맞게 설계를 하는반도체라면
FPGA는 조금 더 범용적인 장비.. 하지만 일반적인 CPU보다는 조금 더 임베디드한? 동작을 하는 장비다
당연히 ASIC보다는 조금 느리지만 특화된 기능에 대해 CPU보다는 빠른 동작이 가능한 장비
ethernet처럼 아주 고정된 동작만을 한다면 ASIC을 사용하겠지만
자율주행, 5G, IoT 처럼 아직 변화가 많이 발생할만한 분야라면 FPGA를 사용

원래 설명

  • https://m.blog.naver.com/PostView.nhn?blogId=msnayana&logNo=80124294898&proxyReferer=https:%2F%2Fwww.google.com%2F

코딩

  1. 언어는 Verilog, VHDL, schematic
  2. 컴파일(synthesis)
  3. 모듈의 위치와 선을 배치하는 작업인 라우팅을 한다고???
  4. 퓨즈 설정으로 회로를 구성시킨다고???
  5. flash나 eeprom에 넣어 실행(펌웨어?)

그냥프로그램만 넣어서 쓸 수 있는건 아닌 모양이다. 여러개의 input과 여러개의 output이 있고 이것중에 일부를 선택해서 사용해야 하는 형태일까

FPGA 코딩으로 할 수 있는 것

  • http://wiki.vctec.co.kr/devboard/fpga/spartan-3a-fpga-gaebalbodeu–elbert/overview
  • https://dkeemin.com/vivado-verilog-%EC%BD%94%EB%94%A9%ED%95%B4%EB%B3%B4%EA%B8%B0/

사진 인코딩, 비디오 스트링 전처리 등
방화벽, 웜바이러스, 디도스 등등 – 패턴화된 네트워크 처리

FPGA router project

FPGA로 라우터를 만든다면?

  • https://en.wikipedia.org/wiki/NetFPGA
  • https://www.turris.cz/cs/omnia/predstaveni/
  • https://www.solid-run.com/marvell-armada-family/macchiatobin/
  • https://librecmc.org/
  • https://openwrt.org/toh/recommended_routers

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

~

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

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

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