AWS Certified Database - Specialty - DBS-C01

AWS Certified Database – Specialty

AWS Certified Database - Specialty 시험을 응시했다.

공부를 안하고 먼저 연습시험부터 봤다.

8월 17일 시험을봤다. 오늘까지 한달정도의 텀이 있었고 DOP를 보면서 DBS에 대한 공부도 어느정도 같이 진행이 되었다. 이때 연습시험에서 나온점수는 45%였다.

총점: 45%
주제별 채점:
1.Workload-Specific Database Design:75%
2.Deployment and Migration:0%
3.Management and Operations:50%
4.Monitoring and Troubleshooting:50%
5.Database Security:50%

공부를 하나도 안하고 본 연습시험이라 각이 보였다. 뭐 깊은 고민도 없는 상태였고, 쭉쭉 시험을 풀어나갈수있었기 때문이다.

DOP 시험후 연습시험을 또 봤다. 이시점엔 공부가 어느정도 진행된 상태였다.

공부라함은..DB 서비스들의 docs를 대충보고 FAQ를 탐독하여 어느정도 지식이 있는상태였다. 대부분의 디비를 쓴상태지만.. 넵튠은 넵튠은...! 생소했다. 그래서 좀 열심히 봤는데 이게또 한번 생성하는 거만 못했다. 16일 밤에 부랴부랴 생성해봤다.

총점: 65%
주제별 채점:
1.Workload-Specific Database Design:50%
2.Deployment and Migration:75%
3.Management and Operations:75%
4.Monitoring and Troubleshooting:50%
5.Database Security:75%

20%를 올렸다. 불안감이 엄습했다..허어....70%였으면 불안하지 않았으리라..근데 불안했다. 그래서 연습 시험보면서 봤던 문제들을 기억해서 넵튠 만들고 오로라로 전환하고 테스트를 했다. 오로라 생성이 좀 오래걸려서..새벽2시 까지 봤다. 이과정을 해보길 잘했지 안해봤으면 넵튠 문제 다 틀릴뻔했다.

https://aws.amazon.com/ko/products/databases/

일단 이걸 기반으로 공부해야한다.

아직 Timestream / QLDB / cassandra 는 시험에 나오지 않는다.

FAQ를 중점적으로 읽고 사용사례를 꼭 읽자.

DBS 는 이미 먼저 한번 공부를 했던 su - 현님의 리드가 있었기에 공부가 쉬웠다.

공부에 도움을 주신 su - 현님께 감사를 드린다.

읽어 주셔서 감사합니다.

또 읽어주세요!

AWS Certified DevOps Engineer - Professional-Review - DOP-C01

일명 DOP 라 불리는 시험으로 AWS 에서 존재하는 2개의 pro 시험중 하나이다.

1차 8월 30일
2차 9월 14일 오늘이다.

8월 30일 시험으로는

698 점이었다. 52점이 모자랐다.

시험을 보고난뒤 현타가 왔지만 자아성찰을 했다.

나는 서비스는 다써봤다.
안 써봤을리 없지.. 그많은 기간 테스트를 해봤으니, 그런데 단순테스트와 서비스에 대한 개념만으로는 나는 DOP를 통과할수 없었다. SAP 때의 지옥이 떠올랐다. 물론 SAP는 서비스 콤비네이션에 대한 질문이 주를 이루므로 각각의 상황에 알맞는 솔루션을 선택하는거라 나의 주종목인 넓고알기에 딱 어울리는 시험이었다. 그러나 DOP는 좀 달랐다.

나는 개발자로서의 경험이 1도 없는 사람이다. 엔지니어로서 오랜기간 일을했고, git 이나, svn, codecommit 등의 서비스를 써본적은 있어도 말 그대로 써본거지 실제로 내가 이걸 활용해 본적이 없는 것이다. 그렇기에 기능분기라던가 마스터 브랜치 같은 개념이나 아티펙트같은 개념이 잘 와 닿지 않았다.

이 모든건 내가 개발자가 아니기에 OPS의 의 영역엔 강할수 있어도 DEV의 영역에는 이해도가 낮았다 라고 판단했다. 그래서 시험에 떨어진 이후, 나는 CI/CD의 Best Practice를 주로 학습하고 여러명의 개발자가 코드분기 패턴이나 승인 패턴, 테스트패턴에 대한 학습을 했다.

그리고 오늘 시험보기 전에 어느정도 확신이 섰다. 내가 뭘몰랐는지에 대한 이유를 알았기 때문이었다. 역시 시험장은 솔데스크가 좋다. 영우글로벌도 좋은데..

각설하고 학습과정은 이렇다.

먼저 자격증의 요구사항을 분석한다.

https://d1.awsstatic.com/ko_KR/training-and-certification/docs-devops-pro/AWS-Certified-DevOps-Engineer-Professional_Exam-Guide.pdf

시험 안내서면 충분하다.

https://d1.awsstatic.com/ko_KR/training-and-certification/docs-devops-pro/AWS-Certified-DevOps-Engineer-Professional_Sample-Questions.pdf

샘플문항을 풀어본다.

각자의 공부방법이 있겠지만 acloudguru나 udemy 등을 이용해서 공부해도 좋다.
그리고 나는 youtube 도 애용하는 편이다.

서비스는 사실.. 뭐...


파틸아저씨의 블로그를 서비스 항목만 참고해서 aws 상에서 만들어 보고 혼자서 실습을 한다. 주로 헤딩을 하며, 생성 구성 사용을 해보고 docs를 나중에 본다.

정독은 쉽지 않다.

어느정도 준비가 되면 연습시험을 본다. 시험 한번합격시에 연습시험 쿠폰을 1개를 주니, 무료 연습시험을 꼭보자.

연습시험에서 낮은 점수를 기록했다해도, 본시험은 그보다 난이도가 낮은 문제가 많이 나오니 너무 걱정말자. 그렇지만.. 걱정 안했다가 내가 8월30일 불합격을 맛봤다.

그 이후 이주간 개발자의 방법을 알기위한 노력을 끊임없이 진행했다.

그중에 가장 많이본건 CI/CD다...

그외에 아키텍처부분은 뭐..그냥 쏘쏘.....

https://aws.amazon.com/ko/products/developer-tools/

크게는 여기서 개발자 툴의 범주를 확인했고

https://aws.amazon.com/ko/codepipeline/faqs/

https://aws.amazon.com/ko/codebuild/faqs/?nc=sn&loc=5

https://aws.amazon.com/ko/codecommit/faqs/

https://aws.amazon.com/ko/codedeploy/?c=dv&sec=srv

https://aws.amazon.com/ko/codeartifact/faq/

https://aws.amazon.com/ko/xray/?c=dv&sec=srv

람다를 운영에서 사용하는 방법을 봤다. .serverless 에서의 lambda는 컴퓨팅을 담당하지만 DOP에서의 lambda는 AWS에서의 서비스간 역할을 강하게 묶어주는 역할이 더많은것같다.

https://aws.amazon.com/ko/lambda/faqs/

AWS Lambda를 사용하여 AWS 이벤트 처리

이 부분이 중요하다. 그리고 또 Cloudfromation AWS 에서 IaC를 맡고 있으므로 굉장히 중요..그리고 Elasticbeanstalk 아직 ECS 나 EKS는 시험에 드물게 나온다.

또한 배포방식..

https://aws.amazon.com/ko/premiumsupport/knowledge-center/codepipeline-deploy-cloudformation/

이런 자습서 꼭 참고하자..보기만 해도 도움이 된다.

내가 DOP를 이해하기위해 본것들이다.

정리를 하며 본건 아니라서 좀 중구난방인데 도움이 되길 바란다.

890점으로 통과했고,

자격증 까지 나왔다.

근래에 자격증 발급속도가 당일 발급이라 만족스럽다.

읽어주셔서 감사합니다!

다음에 또 읽어주세요.!

AWS-EFS-policy

AWS의 콘솔들이 업데이트 되면서 기본정책이 변경되고 있다.

EFS의 생성 정책이 변경된것인데, 이건좀 좋다고해야할지 알지 못하는곳에서 비용이 발생할거라고 해야할지..애매하다.

평소처럼 EFS 생성을 했는데 좀 이상했다.

생성 누르면 바로 생성되는것이다.

원래는 보안그룹이나 태그 처리량 모드같은걸 설정해서 만들수 있었는데..
했더니 사용자 지정 모드가 생겼다.

자세히 봐야할건 기본 유형이 변경되었다는것이다.

사용자 지정을 누르면

자동백업과 수명주기 관리가 30일로 변경된것이다.

원래 설정은 자동백업도 없고 수명주기도 없었다.

-_-;

뭐....그냥 사용자의 편의를 봐준거라 생각도 드는데..

음.............비용 어쩔꺼야..

AWS-Linux-EBS-to-EFS

아키텍쳐를 수정중에 EBS에서 EFS로 파일을 넘길일이 생겼다.

300G 가량의 대량의 파일이 있는 디렉토리를 sync 해야했다.

EBS는 GP2로 400G, 1200IOPS를 가진 볼륨이었다. 스냅샷에서 볼륨을 생성해서 4T로 확장하여 12000IOPS를 가진 볼륨에서 테스트를 진행하였다.

새벽에 먼저 싱크를 진행한 내용이 있는데 network out 이 40mb를 넘지 않았다.

싱크는

rsync -av /src /dst

로 진행한것 같았다. rsync 의 속도를 끌어 올리기 위해 테스트했으나 실패. 속도는 40mb 에서 더 이상 올라가지 않았다.

그래서 강구한 방법이 tar 를 이용한 데이터 이동이었다.

tar -C <src> -cf - . | tar -C <dst> -xf -

속도는 170mb 정도 그러나, 치명적인 단점이 존재했다. 소유권과 퍼미션을 가져오지 않는것이었다.

-_-; 파일이동이라 함은..소유권과 퍼미션을 그대로 가져가야하는데...그게 안됬다. 그래서 임시 방편으로

tar -cvf /dst/file.tar /src

명령어로 EBS의 데이터를 tar 로 압축해서 EFS로 저장하는 명령어로 작업했다.

이때 속도는 170MB 정도.. tar로 압축하지 않고 pipeline 으로 보냈을때와 동일한 방식이지만 소유권과 퍼미션을 유지할수 있는 방법이다.

그렇지만 속도가 마음에 들지 않았다.

물망에 rclone / rdiff-backup 가 있었다.

rclone 은 씅광님이 추천해줘서 오후내내 테스트를 했다. 그런데 속도가 너무 잘나오는데 문제는 퍼미션과 소유권을 가져올수 없는것이다.

그래서 승광님께서 주신 힌트로 테스트를 진행했다.

clone sync /src /dst --checkers 128 --transfers 128

속도는 놀라웠다. T3a.medium type의 네트워크 성능(Gbps) 이라 표기된 5G를 모두쓰는것이었다.

이렇게 network 를 모두 사용하는것은 처음이라 신기할정도로 rclone는 빨랐다.

300G 모두 sync하는데 1시간 30분밖에 걸리지 않았으니까..

그런데 여기서 rclone은 문제가 발생한다.

https://rclone.org/local/#filenames

Filenames

Filenames should be encoded in UTF-8 on disk. This is the normal case for Windows and OS X.

There is a bit more uncertainty in the Linux world, but new distributions will have UTF-8 encoded files names. If you are using an old Linux filesystem with non UTF-8 file names (eg latin1) then you can use the convmv tool to convert the filesystem to UTF-8. This tool is available in most distributions' package managers.

If an invalid (non-UTF8) filename is read, the invalid characters will be replaced with a quoted representation of the invalid bytes. The name gro\xdf will be transferred as gro‛DFrclone will emit a debug message in this case (use -v to see), eg

인코딩 문제인데 이건...하...나중에 rsync 로 남은파일을 채워볼까 생각했지만 불확실성이 너무 컷다. 파일의 누락이 너무많았다

그래도 테스트는 그냥 진행했고 싱크속도 무지빠르고 쓸만했다.

그래서 이후에 소유권과 퍼미션을 넣어주는 작업을 궁리했다.

getfacl -R /src > file.list
sed 's/src/dst/g' file.list
cd /dst
setfacl --restore=file.list

4줄의 명령어로 소유권과 퍼미션을 그대로 가져오는 방법을 찾았다.

이제 인코딩 문제만 해결하면된다 생각했지만, 안정성의 문제때문에

tar로 압축해서 넘기를 방식으로 계속진행하기로 생각했다.

오늘 적당한 낚시와 어드바이스를 주신 승광님께 감사드린다!

AWS-NLB-Sticky-sessions-timeout

ALB에 대한 고찰이후 ELB관련 주제의 포스팅을 적는건 오랜만이다.

NLB의 Sticky 에 대해 한번 적어보려 한다.

Target group의 속성 이야기다.

NLB sticky는 추가된지 6개월정도 지났지만 아직도 일반적으로 아는 기능은 아니다.
너무 오랜기간 없었던 터라 없다고 아는 사람이 더 많은..ㅋㅋㅋ 그런 기능이다.

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/load-balancer-target-groups.html

먼저 Docs 를 링크하고..

NLB의 Routing algorithm 은 ip_hash 방식으로 동작 한다.

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html

The protocol
The source IP address and source port
The destination IP address and destination port
The TCP sequence number

6개의 조건이 일치하면 같은 target으로 연결해주나, 하나의 조건이라도 달라지면 다른 target으로 연결해주는 것이다. 이 tuple 들이이 일치하지 않더라도 같은 target으로 연결하게 하는 방법이 있다. 그것이 바로 sticky session 인것이다.

stictky session 에서 라우팅 조건은 souce ip 뿐이다. 1 tuple인것이다. 하지만 그렇다고 해서 영원히 같은 인스턴스로 연결해주는것은 아니다. 여기엔 시간 제한이 붙어있다.

-추가 - 수정합니다.
docs에는 souce ip 1tuple로 동작한다 적혀있지만 NLB-multi-AZ(HA)구성을 할경우엔 A RR-EIP가 두개가 붙으므로 예상과는 다르게 동작할것입니다. 또한 1tuple로 동작하는 부분또한 client ip + nlb node ip 로 구성되므로 2tuple 로 동작합니다.

예상과 같은 정상적인 결과를 얻기위해선 Weighted, failover 방식으로 route53을 설정해서 단일존으로 라우팅 해야 동일한 결과를 얻을 수 있습니다.
-도움주신 무무님 감사합니다.

docs 대로라면 1tuple이라 생각했는데 요소는 1tuple이 아니라

Connection idle timeout 이다

NLB의 Connection idle timeout 은 TCP 350 초 UDP 120초다.
- UDP는 태우님이 물어보셔서 추가로 알아봤다.

https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#connection-idle-timeout

Elastic Load Balancing sets the idle timeout value for TCP flows to 350 seconds. You cannot modify this value. Clients or targets can use TCP keepalive packets to reset the idle timeout.

Connection idle timeoutElastic Load Balancing sets the idle timeout value for UDP flows to 120 seconds.

그래서 동작은 이렇다.

sticky session 을 켜고 연결이 지속되는 동안은 무조건 같은 target으로 연결되고 마지막 연결부터 350초가 지나고 연결하면 대상/클라이언트 모두 TCP RST 응답을 받아서 sticky session 의 연결이 해제되고 다른 target과 연결되게 되고 다시 sticky로 동작하는거다.

최근에 질문을 받아서 다시한번 정리해봤다.

읽어주셔서 감사하다!

AWS Certified Cloud Practitioner (CLF)-Recertified

Certmetrics 를 보다보니 이상한게 보였다.

CLF 의 상태가..이상하다

파일:oo의 상태가.png

Recertified 상태인것이다. 뭐지 하고 궁금해서 눌러봤다.

CLF를 취득후에 Associate를 취득하면 같이 갱신된다. 그래서 지금 Practitioner 의 만료일자는

자동 연장되어 2023년 8월 23일이다.

결론을 말하자면 CLF를 취득후에 갱신해야 한다면 Associate 자격증을 취득하자.

AWS Certified Developer - Associate-review

AWS Certified Developer - Associate 시험을 오늘 봤다. 오늘은 2020년 8월 11일이다.

영우글로벌에서 시험을 응시했고 영우글로벌 매우 쾌적한 시험장에 PC상태도 좋았다.

일단 합격했고 후기는 쓸게 없다.

나는 공부를 헛했다....다른 사람들의 후기를 보고서 공부를 했는데 정작..공부한 곳에선 한문제도 안나왔다. 그냥 가서 풀고나온거다..

AWS Certified Developer – Associate

이렇게 찜찜할수가...그래도 합격은 합격이니...인증은 써야지..

아....

AWS-NCP-CDN-image-resize-AWS

AWS 에선 Lambda@Edge를 이용한 Image Resise를 할수 있습니다.

당근마켓-Lambda@Edge를 사용한 썸네일 생성

구성도는 위와 같습니다. 이걸 저도 다른 아키텍쳐로 구성한 경험이 있습니다.

따라하면 되는 부분을 빼버리고 좀 포인트가 필요한 부분만 정리를 하려 합니다.

Lambda는 이미 생성해둔 상태이고 역할도 부여해서 이제 Lambda@edge 로 배포하는 과정을 진행하는것입니다.

다음과 같은 메시지가 표시되면 배포가 시작된거라 생각하면 됩니다.

Designer에 위와 같이 trigger에 cloudfront 가 추가됩니다. 그럼 이 Lambda@edge는 CF의 Behaviors에서 확인할수 있습니다.

또한 CF의 Behaviors에 자동으로 추가가 된거까지 보이고, CF의 Status 가 Enabled 상태이면 각 엣지에 Lambda@edge가 정상적으로 배포되었다고 볼수있습니다.

원본이미지

https://cdn.linuxer.name/wp-content/uploads/2020/07/12213445/exam-az301-600x600-1.png

리사이즈 이미지

https://cdn.linuxer.name/wp-content/uploads/2020/07/12213445/exam-az301-600x600-1.png?w=200&h=150&f=webp&q=100

위와 같이 리사이즈된것을 확인할수 있습니다. URL 수정을 통해 리사이즈를 컨트롤 할수 있습니다

  • - w: '200'
  • - h: '150'
  • - f: 'webp'
  • - q: '90'

Cloud9을 이용하여 배포하고 수정하는 과정 자체가 불편하긴 하나, AWS의 인프라를 이용하여 serverless 환경에서 리사이즈 배포 저장공간 추가로 사용하지 않음 등의 잇점을 생각할때 매우 좋은 방법이라는 생각이 들었습니다.

이때 비용을 생각하지 않을수 없습니다.

REPORT RequestId: 9e879aa6-390e-432b-9baf-84f45b238a4b Duration: 1.88 ms Billed Duration: 50 ms Memory Size: 128 MB Max Memory Used: 107 MB

1회 실행한 로그이며, cloudwatch log group에서 확인할수 있었습니다. 계산은 제 블로그의 이미지 리퀘스트 횟수를 빗대어 계산해 보겠습니다.

All Requests: Total: 45.285 K

저는 Cloudfront 를 이용하여 Image를 제공하고 있고 월 평균 5만건 정도의 리퀘스트가 발생합니다.

1회요청당 0.0000006 USD * 50000 = 0.003 USD 입니다.

여기에 50ms 를 0.05 * 50000 = 2500 초를 실행한게 됩니다.

1초당 컴퓨팅 요금은 0.00000625125 USD입니다. 거기에 2500초를 곱합니다.

0.015628125 USD 입니다.

그럼 두가지 계산된 비용을 합칩니다.

0.018628125 USD가 한달 비용으로 발생하게 됩니다. 썼다면 너무 미미한 양이라 과금되는줄도 모르고 썼겠군요..또한 이건 단순계산으로 캐싱된것을 CDN에서 응답하면 람다 사용횟수가 80%는 줄어 들겁니다. HIT율이 80%는 되기 때문입니다.

한화로 환율을 계산하면 22원입니다. 계산이 무의미 하진 않지만..

정말 작은 돈으로 리사이즈를 할수 있다는것을 알수 있었습니다.

이 다음 포스팅은 NCP에서 image-resize를 사용해보고 비용계산을 진행해보려 합니다.

읽어주셔서 감사합니다.

AWS-Certified-SysOps-Administrator-Associate-review

aws sysops 시험을 봤다. 내가 본 시험유형은 SOA-C01유형이다.

사실 Associate 시험이라 연습시험도 안봤고 그냥 걱정이 크게 없었다.
그런데 시험이 다가올수록 걱정이 점점 커졌다.

SA같은 경우에는 설계를 중시하는데 SOA같은 경우에는 운영과 관리자의 입장에서 바라본 AWS의 사용법을 물어보기에 중점적인 부분은 SAA보다 깊이가 깊었다. 특히 내가 어려웠던 부분은 cloudformation 이라던가 잘사용하지 않았던 chef 같은 부분이었다.

그 이외에는 사실 현재 가지고 있던 지식으로 해볼만하다 생각이 들었다.

-시험시작 후 내가 좀 공부가 부족했다는 생각을 많이했다.

SOA는 깊다. 어떤 문제는 PRO에 가까이 걸쳐있는 부분도 있다고 생각되는 문제들이 한두 문제 있었다. 실무자의 입장에서 도움되는 내용이 많았다.

기본공부는 역시

jayendrapatil 아저씨의 블로그를 시작으로 공부했다.

아저씨 최고...

AWS Certified SysOps Administrator – Associate

이 다음 시험은 Developer 다. 모두의 건승을!

AWS-userdata-glusterFS-install

#!/bin/bash
(echo n; echo p; echo 1; echo 2048; echo; echo t; echo 83; echo w) | fdisk /dev/xvdf
mkfs.xfs -i size=512 /dev/xvdf1
mkdir -p /bricks/brick1
echo "/dev/xvdf1 /bricks/brick1 xfs defaults 1 2" >> /etc/fstab
mount -a && mount
yum install -y centos-release-gluster
yum install -y xfsprogs glusterfs-server
systemctl enable glusterd
systemctl start glusterd
Setenforce 0
sed -i 's/^SELINUX=./SELINUX=disabled/g' /etc/sysconfig/selinux && cat /etc/sysconfig/selinux echo " soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
chmod 744 /etc/rc.d/rc.local

ec2 userdata glusterfs install 스크립트 입니다.

https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart