시작하는 엔지니어를 위해


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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://bighit.recruiter.co.kr/app/jobnotice/view?systemKindCode=MRS2&jobnoticeSn=29431

선호 자격 요건입니다.

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 시험 준비를 시작하며 쫒기는 느낌이 들면서 다른 모든것에 소홀했다.

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

급해지기만했다.

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

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

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

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

Public Cloud Status

Amazon Web Services Service Status

Google Cloud Platform Service Status

GCP-PCNE-JBL-Clip3-Review

4월에 PCNE를 취득하고 벌써 3개월 가량이 흘렀다.

해야지 해야지 하고 미루고 미루다 드디어 오늘 PCNE를 취득하고 난 다음 받은 굿즈를 인증겸 리뷰겸 하려 한다.

PCNE 리뷰는 위의 글을 참고하자.

시험을 다치고나서 2달뒤 당도했다.

문명5 세종에 그루브를 입혀봐요 - YouTube

조선의 IDC에 당도한것을 환영하오. 낯선 "JBL Clip3"여.
나는 나의 훌륭한 인스턴스들을 굽어살피는 깨우친 엔지니어, 리눅서요.

드립은 그만 치고 뜯었다.

스티커와 함께 들어있는 Clip3 의 자태가 보인다. 뜯는다.

굿즈의 모습이 아름답다. 이 영롱함을 보려고 PCNE를 두번봤다.

모양은 구글홈미니랑 비슷한 크기에 클립이 달려 있는 모양이다. 튼튼해 보이는 외형에 방수까지 달렸다. 흔히 아웃도어 스피커라 하는 분야의 스피커에 가깝다.

제일 감탄했던건 JBL마크의 붉은 빛의 영롱함이다. 예쁘다.

총평은 패키징이 좋다. 마크는 그냥 판박이 붙여 놓은거 같지만... 예쁘다.

소리는 전원을 키면 일렉기타를 치는 소리가 들리며 스피커가 켜진다. 블루투스 스피커이며, 지연은 없는듯하다. 소리는 저음과 베이스가 강한편.

크기가 작지만 3.3W / 80dB 이다. 크다면 크고 작다면 작은...

샤워할때 주로쓴다.

젖어도 되는 스피커. 좋지 아니한가!

AWS-SCS-note

이아래로는 공부하면서 정리하고 AWS DOCS 에서 발췌한 내용이다.

https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/rotate-keys.html

이미지에 대체텍스트 속성이 없습니다; 파일명은 image.png 입니다.

AWS Secrets Manager

https://docs.aws.amazon.com/ko_kr/secretsmanager/latest/userguide/intro.html

Secrets Manager는 코드의 암호를 포함해 하드 코딩된 자격 증명을 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 호출로 바꿀 수 있습니다. 이렇게 하면 보안 암호가 코드에 더 이상 존재하지 않기 때문에 코드를 검사하는 누군가에 의해 보안 암호가 손상되지 않도록 방지할 수 있습니다. 또한 사용자가 지정된 일정에 따라 Secrets Manager가 자동으로 보안 암호를 교체하도록 구성할 수 있습니다. 따라서 단기 보안 암호로 장기 보안 암호를 교체할 수 있어 손상 위험이 크게 줄어듭니다.

AWS Systems Manager Parameter Store

파라미터 스토어는 애플리케이션 구성 및 보안 데이터를 위한 안전한 중앙 집중식 스토리지를 제공합니다. 파라미터 스토어를 사용하여 구성 데이터를 애플리케이션 코드와 분리할 수 있습니다. 파라미터 스토어는 표준 및 고급의 두 가지 파라미터 계층을 제공합니다. 표준 계층에서는 최대 10,000개의 파라미터와 값 크기로 파라미터당 4KB를 저장할 수 있으며, 고급 계층에서는 최대 100,000개의 파라미터와, 값 크기로 파라미터당 8KB를 저장하고 정책을 파라미터에 추가할 수 있습니다. 지능형 계층화를 통해 파라미터 스토어는 생성 요청 또는 업데이트 요청에서 요청된 기능을 기반으로 계층 선택을 자동화하여 중단 없는 방법으로 고급 계층 기능을 사용할 수 있도록 합니다. 예를 들어 지능형 계층화 설정을 사용하면 계정에 10,000개의 표준 파라미터가 초과되는 경우 후속 파라미터가 고급 파라미터로 만들어져 애플리케이션 코드를 변경할 필요가 없게 됩니다. 지능형 계층화는 기본 계층이라는 새로운 서비스 수준 설정에서 옵션으로 사용할 수 있습니다.

aws config

https://docs.aws.amazon.com/ko_kr/config/latest/developerguide/config-concepts.html

aws cloudtrail

https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/awscloudtrail-ug.pdf

vpc 침투테스트시 허가가 필요없는 서비스가 있음

. https://aws.amazon.com/security/penetration-testing/

허용

  • Amazon EC2 인스턴스, NAT 게이트웨이 및 Elastic Load Balancer
  • Amazon RDS
  • Amazon CloudFront
  • Amazon Aurora
  • Amazon API Gateway
  • AWS Lambda 및 Lambda Edge 기능
  • Amazon Lightsail 리소스
  • Amazon Elastic Beanstalk 환경

금지

Amazon Route 53 Hosted Zones를 통한 DNS zone walking

  • 서비스 거부 (DoS), 분산 서비스 거부 (DDoS), 시뮬레이트 DoS, 시뮬레이트 DDoS
  • 포트 플러딩
  • 프로토콜 플러딩
  • 요청 플러딩(로그인 요청 플러딩, API 요청 플러딩)

GuardDuty

GuardDuty는 AWS CloudTrail, Amazon VPC 흐름 로그 및 DNS 로그와 같은 여러 AWS 데이터 원본에 걸쳐 수백억 건의 이벤트를 분석 route53 이아니라 외부 ad 흐름은 확인할수 없음.

SecureString

SecureString 파라미터는 안전한 방식으로 저장되고 참조되어야 하는 모든 민감한 데이터를 뜻합니다. 암호나 라이선스 키처럼 사용자가 일반 텍스트로 수정하거나 참조해서는 안 되는 데이터가 있는 경우, SecureString 데이터 형식을 사용하여 이 파라미터를 생성합니다.

https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-paramstore-securestring.html

aws kms additional authenticated data

암호화 컨텍스트

대칭 CMK를 사용하는 모든 AWS KMS 암호화 작업은 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 선택적 키–값 페어 세트인 암호화 컨텍스트를 수락합니다. AWS KMS는 암호화 컨텍스트를 추가 인증 정보(AAD)로 사용하여 인증된 암호화를 지원합니다.

s3-403

https://aws.amazon.com/premiumsupport/knowledge-center/s3-troubleshoot-403/

kms-버킷정책-역할의 iam 권한

AWS 리소스에 대한 액세스를 타사에 부여할 때 외부 ID를 사용하는 방법

이따금 AWS 리소스에 대한 액세스를 타사에 부여해야 할 때가 있습니다(액세스 위임). 이 시나리오의 한 가지 중요한 부분은 IAM 역할 신뢰 정책에서 역할 수임자를 지정하는 데 사용할 수 있는 옵션 정보인 외부 ID입니다.

sts:Externald

wordprss-smart-qoute disable

지금까지 내블로그는 복붙이면 가능하도록 만들어 졌다고 생각했다.

그런데 따라해보니 시작부터 에러가 발생하였다.

뭐지? 하고 보니 json 에서 쿼터가..

wordpress smart quotes disable에 대한 이미지 검색결과

이런식으로 작동하는거였다.

이페이지를 참고하여 /wordpress/wp-content/plugins 경로에 disable-plugin-quotes.php 를 생성하고 아래와 같은 내용을 추가하여 주었다.

[root@ip-10-0-0-12 plugins]# cat disable-plugin-quotes.php
<?PHP
/*
Plugin Name: Disable Smart Quotes
Plugin URI: http://www.fayazmiraz.com/disable-auto-curly-quotes-in-wordpress/
Description: WordPress Plugin to Disable auto Smart (Curly) quote conversion
Version: 1.0
Author: Fayaz Ahmed
Author URI: http://www.fayazmiraz.com/
*/
if( version_compare ( $wp_version, '4.0' ) === -1 ) {
// To Disable Smart Quotes for WordPress less than 4.0
foreach( array(
'bloginfo',
'the_content',
'the_excerpt',
'the_title',
'comment_text',
'comment_author',
'link_name',
'link_description',
'link_notes',
'list_cats',
'nav_menu_attr_title',
'nav_menu_description',
'single_post_title',
'single_cat_title',
'single_tag_title',
'single_month_title',
'term_description',
'term_name',
'widget_title',
'wp_title'
) as $sQuote_disable_for )
remove_filter( $sQuote_disable_for, 'wptexturize' );
}
else {
// To Disable Smart Quotes for WordPress 4.0 or higher
add_filter( 'run_wptexturize', '__return_false' );
}

이렇게 플러그인이 생성되고 활성화하면

이증상이 사라진다..

지금까지 내블로그에서 복붙안되셨던 분들께 사죄를..