시작하는 엔지니어를 위해-2

시작하는 엔지니어를 위해-1 적은지 두달이 지났습니다.
다음편을 써야겠다 여러번 마음을 먹었지만 쉽지 않았습니다.

이전 주제는 엔지니어의 방향성에 대해서 이야기를 했습니다. 시스템 엔지니어와 클라우드 엔지니어의 차이 그리고 근본적인 핵심을 다루어야 한다는 이야기 까지요.

엔지니어로서 어떻게 하면 클라우드가 쉬워질까? 그리고 클라우드가 대세인 요즘 어떤 방향성을 가져야 할까? 를 적어보려 합니다.

먼저 클라우드는 마케팅 적 용어라 생각 합니다.

클라우드라 정의하고 이야기하지만 본질적으로는 컴퓨팅리소스를 임대하는 범주에서 벗어날수 없습니다. 물론 여기에는 많은 생략이 들어가 있기는 합니다. 하지만 클라우드가 대량의 컴퓨팅파워를 재 가공해서 판매하는 개념은 달라지지 않습니다.

이전에는 서버를 사용하려했다면 서버를 구매하고 서버를 랙에 입고하여 OS를 설치하고 IP를 할당받아 부여해서 사용하는 방식을 사용했습니다. 시작하려면 고정적인 금액이 발생했던 거죠. 그런데 클라우드에서는 구매 입고 설치 이런 과정들이 생략되게 됩니다.

편해 졌는데 이상하게 접근 장벽이 높습니다. 클라우드를 공부 하려는 동료 엔지니어들 만봐도 어려워합니다.

왜 일까요?

제 생각은 포장이 너무 잘되어 있기 때문입니다.

근본적으로 그냥 가상화 위에 네트워크를 제공한다. 이렇게 접근하면 아주 쉬운데 우리는 VPC / EIP / EC2 이런 용어들에 별 세계의 새로운 기술인것처럼 포장되어 있는 바람에 접근이 어렵다 생각됩니다.

물론 퍼블릭 클라우드를 구현하기위해선 진짜로 어렵고 많은 기술들이 사용 되었습니다. 그러나 사용자가 무조건 알아야지만 쓸수있는것은 아니라는 것입니다. 애초에 퍼블릭 클라우드의 제공 목적도 쉽고 간편하게 사용 이니까요.

그래서 말하고 싶은바는 포장지를 볼게 아니라 무엇을 제공하냐? 입니다.

VPC는 Virtual Private Cloud 으로 사설망을 제공합니다. EC2는 가상 머신입니다. 서버라고도 하죠. EIP는 공인 IP 입니다.

이정도 연관하여 이야기하면, 느낌이 딱 올 겁니다. 어려운건 아니었구나.

그럼 어려운건 무엇일까요?

잘 사용하는 것, 입니다.

VPC는 망분리 디자인을 얼마만큼 해야하는지 퍼블릭과 프라이빗의 차이는 뭔지, 어떻게 하면 더 보안적인 측면을 강화할수 있는지. 이떤 패턴이 가격이 싼지 등을 궁리하고, 더 편하고 빠르고 무결 한 방법을 고민하는것이 어려운것이죠.

그렇다면 이제 구분에 대해서 이야기 하겠습니다.
이 구분은 클라우드를 이야기할때 빼놓을 수 없는 이야기입니다.

IaaS / SaaS / PaaS 가 그것입니다. 이 구분은 관리 영역이 누구에게 있는지로 구분을 합니다. 그럼 여기서 다시 포장의 개념을 가져와 봅시다. 클라우드 벤더가 어디까지 포장해서 판매하는지, 그 포장의 개념이 여기 여러가지의 구분입니다.

IDC - Network - Server - virtualzation - OS - DB - App - Data

그럼 IDC에서 부터 관리해야 하면 뭘까요? Hosting 입니다.

그럼 부터 OS는요? IaaS 입니다.

App 부터는 PaaS 입니다.

Data 부터는 SaaS 입니다.

이제 예를 들어 보겠습니다.

인스턴스에 CentOS를 사용한다면 IaaS 입니다.

PaaS는? EB, EKS ECS 등이 PaaS입니다.

SaaS는? AWS에서 자랑하는 대부분의 서비스는 SaaS입니다 RDS가 그렇습니다.

이 구분을 어느정도 해내는 단계에 오면 이제 클라우드 서비스가 어느정도 익숙해진것입니다. 제공자와 나의 경계범위를 확인할수 있는 것 이니까요.

이 구분법은 간단하게 클라우드 벤더에서 제공하는 단계에따라 비용의 상승을 불러일으킵니다. 책임과 관리의 범위를 클라우드 벤더가 가져가는 만큼 비용의 상승이 발생하는 것입니다.

클라우드에 선 기회와 시간에 대해서 이야기합니다.

비즈니스에 집중하세요.

이 말입니다. 비즈니스에 집중하는 것은 인프라나, 플랫폼이나, 서비스의 관리를 벤더 에서 해주니 그 기회 비용을 비즈니스에 사용 하라는 말이죠.

저는 엔지니어의 길이 이곳에 있다 생각합니다.

IaaS,PaaS,SaaS를 기회와 비용을 적절하게 섞어서 사용하는것 말이죠. 무조건 관리형 서비스를 쓰는게 능사가 아니라, 관리포인트가 적은 서비스라면 직접구축해서 쓰는것또한 필요하다는 이야기 입니다.

정리하겠습니다.

좋은 엔지니어라면 칼을 가리지 않아야 합니다.. -키보드는 가립니다-

무조건 써야하는것은 없습니다. 필요한 부분에 적재적소로 사용해야 합니다. 한가지만 고집하는것은 결국 시대에 도태 될수있습니다. 그렇기에 온 프레미스도, 클라우드도 IaaS도 SaaS도 적절하게 사용하는것. 이것이 엔지니어로 가져야할 필수 마인드라 생각합니다.

언제든지 쓸수있도록 준비하세요. 그 준비가 더 나은 기회를 잡을수 있도록 도울것입니다.

긴글 읽어주셔서 감사합니다.

terraform-provider-ncloud-review

오늘 하시코프x네이버클라우드 웨비나에서 terraform 과 Vault 에 대한 웨비나를 청취했습니다.

https://github.com/NaverCloudPlatform/terraform-provider-ncloud

이전에 방과후(?) meetup에서 네이버클라우드가 테라폼의 프로바이더로 있다는것을 알았습니다. 그 덕분에 네이버클라우드에서 terraform은 이미 경험이 있는 상태고, Vault도 경험이 있었습니다. 오늘의 주제 중 Secrets Engines이 궁금했습니다.

https://www.vaultproject.io/docs/secrets

Secrets engines are components which store, generate, or encrypt data.

시크릿엔진은 데이터를 저장또는 생성하고 암호화하는 구성요소.

AWS 의 Parameter Store / Secrets Manager 와 비슷한 기능을 한다고 생각이 들었습니다. 다른 벤더에서도 비슷한 서비스들이 있습니다.

https://hackernoon.com/aws-secrets-manager-vs-hashicorp-vault-vs-aws-parameter-store-bcbf60b0c0d1

https://www.cloudjourney.io/articles/security/aws_secrets_manager_vs_hashi_vault-su/

가장 일반적인 사용예라 생각되는것은, access key의 암호화라 생각됩니다. 일반적으로 aws-vault 같은 명령어로 지원합니다.

아직 ncp-vault 가 만들어진게 아니라, ncp 내에서 사용하기엔 좀 불편한 부분이 있으리라 생각됩니다. 현재 npc 는 provider로 등록된 상태고 cli 를 지원하므로 차차 지원하리라 생각됩니다.

https://www.44bits.io/ko/post/securing-aws-credentials-with-aws-vault#%ED%85%8C%EB%9D%BC%ED%8F%BCterraform%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

aws 에서의 vault 사용예입니다.

https://www.vaultproject.io/docs/secrets/databases/mysql-maria

mysql-maria db의 user 암호화입니다.

이런 방법이 필요한 이유는 결국 어플리케이션 소스의 탈취로 문제를 방지하기 위함입니다. key의 자동로테이션이나, expire time 을가진 key 발급등을 할 수 있습니다.

Vault 는 근래에 들어서 굉장히 핫한 오픈소스라 테스트 해보시는게 좋을것 같습니다.

마무리를 하자면..

템플릿 소스들이 점점 쌓이고 사용예가 늘면 IaC는 점점 더 일반화 될것입니다.

미리미리 IaC를 준비하고 사용방법을 익히는것도 좋을것 같습니다.

조만간 Secrets Engines 사용하기 위해 자동화 스크립트를 적용하는 고민을 한번 해보려 합니다. 시간이 나면 한번 테스트 해봐야겠습니다.

읽어주셔서 감사합니다!

AI-speaker-identification-with-clovanote

오늘 클로바 노트 어플을 출시한걸 보고 사용해봤습니다.

클로바노트-아이폰

클로바노드-안드로이드

기능을 설명하자면 음성을 텍스트로 변환한다 ~ 이건 근래에 매우 일반화된 기능입니다.Speech Recognition 이라 합니다.
그런데, 이 어플은 음성->텍스트 변환 속도가 엄청나게 빠른것과 화자 구분기능이 있습니다. 화자 구분은 하나의 음성파일에서 각각 다른사람의 대화를 구분해주는 기능이죠.

이기능이 좋은이유는 장시간의 대화록에서 누가 어떤말을 했는지 각각 구분해 주므로 엄청난 편리성이 가미된것이죠.

위와같이 여러사람의 목소리를 구분해서 보여줍니다.

각각 벤더를 사용하시는 주변분들이 서비스에 대해 알려주셔서 찾아봤습니다.

NaverCloud

https://www.ncloud.com/product/aiService/clovaSpeech

Azure

https://azure.microsoft.com/ko-kr/services/cognitive-services/speaker-recognition/

GCP

https://cloud.google.com/speech-to-text/docs/multiple-voices?hl=ko

AWS

https://aws.amazon.com/ko/transcribe/

제가 AI의 트랜드와 기술력에 대해서 너무 몰랐다는 생각이 들었습니다.

각 벤더들마다 각자의 기술력으로 음성을 텍스트로 변환하고 화자구분기능을 모두 가지고있었습니다.

그러나, 이 아이디어 실제로 구현한다는건 많은 고민과 테스트가 필요할것으로 보입니다.

또한 번역API를 예로들면 파파고나 구글번역기의 정확도나 번역방식이 다르듯이 각나라의 음성을 텍스트로 변환하는 방식에서 쌓인 데이터에 의해 정확도가 다를것입니다.

그렇기에 현재는 네이버클로바의 정확도가 한글에 대해선 가장높지 않을까 예상됩니다.

어플덕분에 AI의 현기술의 변곡점과 치열한 벤더들간의 차이를 이해하게된 계기였습니다.

클로바노트의 건승을 기원합니다.

감사합니다.

naver-clovnote

https://apps.apple.com/gb/app/%ED%81%B4%EB%A1%9C%EB%B0%94%EB%85%B8%ED%8A%B8-ai-%EC%9D%8C%EC%84%B1%EA%B8%B0%EB%A1%9D/id1530010245

클로바노트앱 광고를 보고 바로 깔았다.

쓰자마자 생각이 들었다.

이거....미친거아냐?

와....................................할말이 없을정도로 대단한 어플이다.

그냥 단순히 음성녹음 -> 텍스트 변환이아니라

사용자마다 목소리를 확인해서 각자다른 사람으로 인식한다.

그래서

이런식으로 말한사람을 분리하여준다...그저 기술의 혁명이 쩐다..............................

진짜 엄청나네

시작하는 엔지니어를 위해-1


먼저 제소개를 하자면, 시스템엔지니어로 10년차, AWS를 다룬지는 3년이 됐습니다.

요즘 시스템 엔지니어로 시작을 꺼리는 분들이 많습니다.

이유는 클라우드가 급 부상 하고 있기 때문입니다. 물어보면 대부분 클라우드 엔지니어를 하고싶다. 말합니다. 그런데 클라우드 엔지니어는 뭐고, 시스템 엔지니어는 뭐길래 이렇게 이야기가 많을까요?

그럼 두 직군의 차이부터 한번 이야기해봐야 할거 같습니다.

시스템 엔지니어는 클라우드가 생기기 이전부터 시스템 전반을 책임지는 역할로, 주로 셋팅과 구성 그리고 트러블슈팅을 맡아서 하던 직군입니다.

클라우드 엔지니어는 클라우드를 가지고 인프라를 구성하고 트러블 슈팅을 합니다.

어? 뭐가 다른거죠? 궁금하실 텐데요. 사실 별반 다르지 않습니다. 시스템 엔지니어가 클라우드를 사용해서 시스템을 구축할수도 있는거고 클라우드 엔지니어가 지원을 위해 온프렘의 서버를 보기도 해야합니다.

사실 이 두 직군의 차이는 시작 지점이 어디에 있냐의 차이일 뿐 하는일의 근본적인 차이는 없습니다. 그렇다면 뭘 배워야 하고, 뭘해야 할지가 중요할텐데요.

먼저 리눅스가 중요합니다. 정말 중요합니다.

클라우드 엔지니어로 시작하게 되면 리눅스를 깊게 다루지 않게 됩니다. 이유는 클라우드 플랫폼 내에서 기술지원을 하기때문에 중점적으로 배우는것은 플랫폼의 사용법과 구성인것입니다. 거기에 lock-in 이 발생하게 됩니다. 보통 lock-in 이라 하면 다른 플랫폼으로 떠날수 없는 서비스나 사이트를 말하는것인데, 이 문제점이 사람에게도 발생하는 것입니다. 이부분이 나쁘다는건 아닙니다. 저도 AWS를 정말 좋아하니까요. 하지만, 제공되는 서비스만 사용해서는 사용자 이상으로 나아갈 수 없게됩니다. 그래서 언제든, 탈 플랫폼을 하기위해선 유연하게 여러 솔루션을 사용하고 배우는 기반이 있어야 합니다.

그것이 바로 엔지니어 에겐 리눅스입니다. 그럼 리눅스로 뭘해야 할까요?

일단 명령어에 익숙해 져야 합니다. 리눅스의 상태를 확인하고, 프로세스의 상태를 확인할수 있는 방법을 알아야 합니다.

그 다음은 로그를 보고 서비스를 확인할 수 있어야 합니다. 이전의 엔지니어가 여기까지 했다면 요즘의 엔지니어는 로그를 가공하고 지표로서 사용할 수 있는 능력까지 길러야 합니다.

너무 두루뭉실 했나요? 그럼 기업에서 요구하는 사항으로 예를 들어볼까요?

선호 자격 요건입니다.

Tomcat, Nginx, IIS, DB, Mail, DNS 등 구축 및 운영 관리 경험을 보유한 분
Shell Script & Query 사용 경험이 있는 분
네트워크, 방화벽, VPN등 네트워크 및 보안에 대한 이해도가 높은 분
IaC (Infra as a code)등의 구축 경험 및 OSS 등의 솔루션 사용 경험이 있는 분

사실 선호 자격이라 적었지만, 선호자격이라기 보단 10년차 IT 인프라 운영 직무에 있는 사람에겐 반드시 겪었어야 하는 과정의 요건일 겁니다.

그럼 정리해볼까요.

클라우드 엔지니어와 시스템 엔지니어는 시기상의 문제입니다.
결국 엔지니어는 IT 인프라를 다루는 포지션이 될것입니다.

배워야하는 순서라면 시스템의 코어인 리눅스부터 네트워크까지를 전체로 다우는 교육이 좋습니다.

기본이 튼튼하면 클라우드도 금방 배울수 있습니다.

그럼 빅히트의 요강을 보고 배워야 하는 우선 순서를 알아볼까요.

  1. Tomcat, Nginx, IIS, DB, Mail, DNS 등 구축 및 운영 관리
  2. Shell Script
  3. 네트워크, 방화벽, VPN등 네트워크 및 보안
  4. EC2, RDS, Aurora, CF, Cloudformation 등 다양한 클라우드 인프라 서비스
  5. IaC (Infra as a code)등의 구축 경험 및 OSS 등의 솔루션

이정도 순서로 배워야할것들을 정할수 있습니다. 서비스부터 점점 인프라까지 배우는것이죠.

한번에 모두를 다할순 없으니 시간이 될때마다 개념이라도 알아두시는게 좋습니다.

그럼 이만 시작하는 엔지니어를 위한 짧은 글을 마치겠습니다.

WordPress-https

워드 프레스를 사용하는 사이트중에 이런메시지가 뜬다

이 사이트의 보안 연결(HTTPS)은 완벽하지 않습니다.

이건 모든 컨텐츠가 HTTPS로 전송되지 않고 HTTP로 전송되는 컨텐츠가 있다는 이야기다.

이경우에 모든 컨텐츠를 HTTPS 로 전송하도록 몇줄만 넣어주면 된다.

vi 로 wp-admin.php 를 열고 <?php 뒤에 붙여 넣어주자.

--소스가 waf에 걸려서 업로드가 안된다-_-; 마음에 여유가 생기면...--

https://wordpress.stackexchange.com/questions/170165/wordpress-wp-admin-https-redirect-loop

여기서 57번 답변을 참조하자

이것만 넣으면 모든 컨텐츠가 HTTPS 로 전송된다.

RAID-F1

raid f1은 sysnology에서 만든 독자 raid 이다.

https://global.download.synology.com/download/Document/Software/WhitePaper/Firmware/DSM/All/enu/Synology_RAID_F1_WP.pdf

raid f1 백서다.

지금까지의 레이드는 디스크에 적합한 레이드였다. 그래서 raid controller 를 이용한 레이그 구성시에 SSD를 이용할 경우 정상적으로 퍼포먼스를 사용하지 못하거나 controller의 cache 를 disable 해서 사용하는 등의 여러가지 문제점이 발생하였다. 이런 문제점들을 개선하기위해 새로운 레이드를 sysnology에서 만든것같다.

RAID F1 F는 flash - 1은 disk 를 나타낸다고 한다.

F1은 raid5 의 방식을 차용한것으로 보입니다.

백서에선

요약하면 Synology RAID F1은 다음과 같은 이점을 제공합니다.
성능은 RAID 5에 가깝습니다.
지능형 RAID 재 구축
기존 RAID 알고리즘보다 뛰어난 플래시 내구성
8 %의 낮은 용량 오버 헤드로 높은 스토리지 효율성 (12 개의 SSD가있는 RAID F1)

페리티가 raid5보다 마지막 블록에 더 많은것으로 보입니다.

capacity of a RAID F1 array is N-1 times of smallest drive, where N is the stripe width or the number of disks.

결론은 페리티가 고정되어 읽기쓰기를 진행하여 모든 SSD가 한꺼번에 장애포인트가 되는것이 아닌 고정된 페리티를 사용하여 전체가 아닌 하나의 SSD의 수명을 소모시키는 방식입니다.

Since each write-operation involves writing to the parity block, it is expected that
the parity block will be worn out in the first place. This uneven parity distribution
approach will lead to that one SSD reaches its lifespan earlier than others, instead of
making all SSDs reach the end of their lifespan at the same time. When one SSD fails,
the customer can replace it with a new one.
The characteristics of RAID F1 is similar to RAID 5. Parity blocks are XOR’ed of all
other data blocks. One block is used as parity block within each stripe, so the usable
capacity of a RAID F1 array is N-1 times of smallest drive, where N is the stripe width
or the number of disks.

장단점이 있는방법으로 사실 뭐가 더 우월하다 보긴 어렵지만 장애포인트에 있어서 하나의 SSD만 교체하면된다는 부분은 매우 긍정적으로 생각할수 있을거 같습니다.

에드센스 광고 추가

블로깅이 좀 시들해졌다..

AWS Devops pro 시험 준비를 시작하며 쫒기는 느낌이 들면서 다른 모든것에 소홀했다.

생소한것을 배우는건 즐거운 일이지만 거기에 목적이 들어가고 겹쳐지면 초초해진다.
이번엔 내가 페이스를 놓쳤다.

급해지기만했다.

블로깅을 손에서 놓으니까 뭔가 루즈해지는게 치열하지 않았다.

그래서 에드센스를 추가하고 동기를 얻어보려 했는데..

생각보다 애매했다..ㅋㅋㅋ

일단 유지해보고 반응을 봐야겠다.