전체 글

전체 글

    카오스 엔지니어링이란 ?

    AWSKRUG devops 소모임과 AWS Summit Seoul에서 정영진님이 발표하신 카오스 엔지니어링에 대해 흥미가 생겨 카오스 엔지니어링에 대해 알아보기 위해 조사를 했다! 먼저 카오스 엔지니어링이란 production의 오류에 대한 서비스를 강화하여 일관된 안정성을 얻을 수 있도록 도와주는 방법론이다. 즉, 분산 시스템에서 예측치 못한 상황에도 견딜 수 있도록 실험을 통해 신뢰성을 확보하는 방법론이라고 볼 수 있다. 정영진님께서는 AWS EKS 환경에서 오토스케일링을 위해 Karpenter를 쓰는 경우 노드 그룹이 죽거나 DB 연결에 문제가 생기거나 네트워크가 끊기는 등 장애 상황을 미리 검증하기 위해 카오스 엔지니어링을 적용하셨고 테스트로는 AWS Fault Injection Service를 ..

    테라폼이란?

    [ https://github.com/hashicorp/terraform](https://github.com/hashicorp/terraform) [ https://developer.hashicorp.com/terraform/intro](https://developer.hashicorp.com/terraform/intro) 테라폼은 HashiCorp에서 만든 코드형 인프라 도구인데 이걸 이용해서 클라우드 및 온프레미스 리소스를 모두 정의할 수 있고 버전화나 재사용 및 공유도 가능하다 테라폼을 이용하면 워크플로를 사용해서 수명 주기 동안 모든 인프라를 프로비저닝하고 관리할 수 있다. 그리고 컴퓨팅, 스토리지, 네트워크 리소스와 같은 low-level의 리소스 뿐만 아니라 DNS나 SaaS 기능과 같은 hi..

    AWS Cloudtrail & EventBridge를 이용해서 s3 작업에 대한 컨테이너 작업

    AWS CloudTrail은 AWS 리소스에 대한 api 활동을 추적해서 기록하는 역할을 해주는 서비스에요. CloudTrail 이벤트를 사용하면 AWS 리소스에서 발생하는 이벤트에 대한 세부 정보를 수집하고, 이를 통해서 리소스의 보안을 강화할 수도 있다고 해요! 그러면 이제 AWS CloudTrail에 들어가서 추적을 하나 생성해주면되는데 이때 s3 버킷은 기존에 있는걸 사용해도 새로 만들어도 돼요! 친절하게 hint로 어디에 로그가 저장되는 곳까지 알려줘요 그리고 추적을 만드는거 외에 이벤트 기록을 보거나 쿼리도 제공을 해주더라구요! 이제 EventBridge로 가서 규칙 하나를 생성해주면 돼요! 저는 다음과 같이 이벤트 소스는 s3를 선택했고 타입은 아래처럼 cloudtrail을 통한 api 호출..

    AWS CodeDeploy에 대해 알아보기

    AWS에서는 aws codeDeploy에 대해 다음과 같이 소개하고 있어요. `Amazon Elastic Compute Cloud(EC2), Amazon Elastic Container Service(ECS), AWS Lambda 및 온프레미스 서버와 같은 다양한 컴퓨팅 서비스에 소프트웨어를 자동으로 배포하는 완전관리형 배포 서비스` CodeDeploy에서는 흔히 아는 블루/그린 카나리, AllAtOnce 등의 여러 가지 배포 전략을 지원하고 있어요. 그중에서도 해볼 블루/그린 전략은 모든 트래픽이 새 버전으로 라우팅되는 동안 이전 버전을 5분간 실행 상태로 유지하는데 그 이유는 새 버전이 잘 작동하지 않을 경우 이전 버전으로 라우팅하기 위해서라고 해요! 먼저 애플리케이션을 생성해주는데 저는 ECS서비스..

    AWS Kinesis Data Firehose를 consumer로 이용해서 AWS S3로 데이터 스트리밍

    먼저 Kinesis Data Firehose를 생성하기 앞서 Kinesis Data stream을 하나 생성해줍니다. 온디맨드 같은 경우에는 써있는 것처럼 자동으로 확정되다 보니 과금될 우려도 있고 저는 단순 실습이라 프로비저닝으로 샤드는 한개를 만들어서 실습을 진행했어요. 샤드는 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스이고 스트림은 보통 하나 이상의 샤드로 구성되어 있어요. 갹 샤드는 고정된 용량 단위를 제공해 주며 읽기에 대해 초당 최대 5개의 트랜잭션, 초당 최대 2MB의 데이터 읽기 속동, 초당 최대 1000개의 레코드까지 그리고 초당 최대 1MB의 총 데이터 쓰기 속도를 지원한다고 합니다! 샤드 계산기를 누르면 아래처럼 초당 최대 레코드 수나 레코드 크기를 지정할 수 있어요! 여기서 소..

    AWS ALB에서 경로에 대한 람다 함수 호출

    먼저 로드 밸런서 하나를 만들어줘야하는데 ec2에 왼쪽 탭에 로드 밸런서 탭이 존재해서 거기서 설치를 할 수 있습니다! 여기서 우리가 만들건 ALB라서 create 한 다음 scheme는 internet-facing을 골라서 진행했어요 (두개의 차이는 이제 vpc 내부에서 접근하냐 외부에서 접근하냐의 차이고 저는 외부에서 curl을 날려서 확인할 예정이어서 internet-facing을 선택했어요. 이걸 선택하려면 public subnet으로 vpc를 연결해야하는데 저 같은 경우엔 vpc를 하나 만들어서 서브넷 두개를 만들고 그걸 internet gateway로 연결했습니다 ~ ) vpc에서 mapping은 서브넷 두개 만들었던거 다 해줬어요 ! security group은 default를 선택했고 li..

    Deployment

    9.1 파드에서 실행 중인 애플리케이션 업데이트 파드를 업데이트하는 방법에는 두가지가 존재. 하나는 기존 파드를 모두 삭제한 다음 새 파드를 시작하는 방법, 다른 방법은 새로운 파드를 시작하고 기동하면 기존 파드를 삭제하는 방법이 존재. 첫번째 방법은 블루-그린 디플로이먼트라고 부르고 두번째 방법은 롤링업데이트 방식이라고 불림. 첫 번째 방법의 단점은 기존 파드에서 새 파드로 교체되는 시간 동안에는 애플리케이션을 사용할 수 없다는 단점이 있고 두 번째 방법의 단점으로는 애플리케이션이 동시에 두가지 버전이 존재하게 된다는 단점이 있음. 블루-그린 디플로이먼트 방식은 잠시 동안 두배의 파드가 존재하게 되므로 더 많은 리소스를 필요하게 되지만 동시에 두가지 버전이 존재하지는 않음. 그리고 두 방식 보두 또 다..

    쿠버네티스 소개

    쿠버네티스 소개 1.1 쿠버네티스와 같은 시스템이 필요한 이유 1.1.1 모놀리식 구조에서 마이크로서비스 구조로 전환 옛날에는 소프트웨어 애플리케이션이 monolithic 구조였음. 현재도 레거시 시스템은 이런 경우가 많음. 현대에 와서는 이런 구조가 마이크로서비스라는 독립적으로 실행되는 더 작은 구성 요소로 세분화됨. 그래서 급변하는 비즈니스 요구사항에 맞춰서 서비스를 개발할 수 있게 됨. 하지만 서비스의 규모가 커지고 점점 늘어나면서 이걸 수동적으로 관리하는 것을 어려운일. 그래서 배포나 구성, 관리, 스케쥴링, 장애 처리를 해줄 수 있는 자동화 과정이 필요 -> 이 역할을 수행하는게 쿠버네티스 모놀리식 애플리케이션은 서로 강하게 결합되어 있고 전체가 하나의 운영체제 프로세스로 실행되기 때문에 하나의..

    ConfigMap과 Secret

    컨피그맵과 시크릿: 애플리케이션 설정 7.1 컨테이너화된 애플리케이션 설정 컨피그맵은 설정 데이터를 최상위 레벨의 쿠버네티스 리소스에 저장하는 방법을 말함. 시크릿은 컨피그맵과 비슷한 설정 데이터를 저장하지만 암호화 키 값은 보안과 관련된 정보를 저장한다는 차이가 존재. 7.2 컨테이너에 명령줄 인자 전달 7.2.1 도커에서 명령어와 인자 정의 dockerfile에서 ENTRYPOINT는 컨테이너가 시작될 때 호출될 명령어를 정의하고 CMD는 ENTRYPOINT에 전달되는 인자를 정의. ENTRYPOINT를 전달하는 형식은 shell과 exec형식이 있는 shell은 ex) ENTRYPOINT node app.js 방식이고 exec 방식은 ex) ENTRYPOINT ["node","app.js"] 방식이..

    QUIC HTTP/3 내용 정리

    QUIC 새로운 transport layer udp위에 동작하지만 tcp에 상응하는 transport layer 운영체제 밖에서 동작 현대 통신 프로토콜 패러다임 리눅스 커널 바깥으로 유연하게 프로그래밍할 수 있게 PowerShift from Standard to Opensource Out of TCP QUIC은 TCP를 대체하는 범용 목적의 전송 계층 통신 프로토콜로서 당초 처음에 이름을 낼때 Quick UDP Internet Connections로 제안 → IETF에서 QUIC으로 지정. QUIC 은 UDP 베이스로 tls로 반드시 보안을 제공하도록 했고 에러 검출 및 복구, 흐름 제어에 대한 내용이 들어감. 하지만 기존 tcp와 관련해서만 기술이 발전 하다보니 tls와 친화력이 없어서 성능적으로 문..