전체 글 72

[Prometheus]모니터링 방식

질문정리 Q1. 모니터링 시스템에는 메트릭 수집을 위한 두가지 방식의 메커니즘이 존재합니다. 바로 Pull 방식과 Push 방식입니다. 프로메테우스는 어떤 방식의 메커니즘을 사용하나요? 또한 Pull 방식과 Push 방식은 어떻게 다르며, 장단점은 무엇인지, 또한 해당 방식을 사용하는 모니터링 도구는 어떤 것들이 있는지 연구해보세요. A. 모니터링 시스템의 메트릭 수집이란, 서비스를 운영함에 따라 발생하는 여러 상황들에 대해 특정 지표를 수집하여 상황을 통제, 예측, 관측 하기 위한 행위이다. 여기서 말하는 특정 지표를 메트릭이라고 한다. 보통 성능을 알고싶다면 메모리, 서버를 알고싶다면 cpu, db를 알고싶다면 캐시 히트율, 페이지 기대수명 등등 다양하다. 이러한 정보를 알아오는 방식에는 크게 두 가..

[python]언더스코어

아휴 스크립트 언어 짱싫다 했는데 어쩌다보니 하고있네... 언더 스코어(_) 기본적으로 언더 스코어는 여타 다른 언어에서 스네이크 방식의 변수 및 함수를 선언할 때 이름에 쓰였다. 그런데 파이썬에서는 조금 특별한 위치를 가진다. 인터프리터에서 마지막 값을 저장 값을 무시하고싶을 때 변수나 함수명에 특별한 의미, 기능부여 숫자 리터럴값의 자릿수 구분용 인터프리터에서 인터프리터, 그러니까 대충 터미널 켰을때 인터프리터는 대화형 실행을 하기 때문에 마지막 값을 볼 수 있다. 그 마지막 값을 받아 오는 _ >> 1+1 2 >> _+1 3 이런느낌 값을 무시하고싶을 때 일단 이 용도의 _는 python 3.x 에서만 사용 가능하다. # 언패킹시 특정값을 무시 x, _, y = (1, 2, 3) # x = 1, y..

language/python 2022.05.10

[Kubernetes] http 에러 검증, 파드, pv

질문정리 애플리케이션에 HTTP 500과 같은 에러가 발생한 경우, 컨테이너를 다시 실행해야 할 것 입니다. HTTP 에러가 발생했다는 것을 어떻게 알 수 있을까요? 어떻게 해야 쿠버네티스가 에러가 발생한 컨테이너를 자동으로 재시작하게 만들 수 있을까요? (힌트: liveness probe 키워드를 검색하세요) 질문 재정의 : 컨테이너를 굉장히 많이 띄워보려한다. 한 백만번 띄웠는데 그 중에 300번 쯤 실패했다는 로그를 봤다. 그 때 마다 직접 새로 컨테이너를 띄울 수는 없다. 자동화를 하자. 어떻게 할까 1) 어떤 에러로 실패했는지 알아내야한다. 2) 어떻게 일일이 살피지 않고 자동으로 컨테이너를 재시작 할 수 있을까. 1) 어떤 에러로 실패했는지 알아내야한다. 컨테이너의 라이프 사이클 : pendi..

[Terraform] 테라폼 동작방식

1. 가변적(mutable) 인프라와 불변적(immutable) 인프라의 차이 가변적 인프라 수정사항이 발생 > 서버를 수정 후 배포 불변적 인프라 서버를 배포한 후 수정하지 않는 방식 서버 변경이 필요 > 폐기 후 새로 구성 이 과정에서 수정사항이 적용된 서버에 대한 테스트 후 새로 배포하는 방식. 2. Terraform의 선언적 방식으로 작성된 코드는 항상 인프라의 최신 상태를 의미합니다. Terraform은 어떤 방식으로 인프라를 최신 상태로 유지할 수 있는 걸까요? 테라폼의 선언적 방식이란, 선언적으로 리소스릉 정의하고 관리할 수 있다는 것이다.이를 설명하기 위해서는 선언형에 대한 설명을 우선해야하는데, 선언형 프로그래밍으로 예를 들어보자.선언형이란 how가 아니라 what에 집중하는 방식이다.어..

0414(목)

내 멘탈 와장창 와장창 와장창... 사실 이거 쓸 시간에 하나라도 더 해야하는데 솔직히 너무 지쳤다. 멘탈부터 잡아보려면 어디든 쏟아내야하지않을까 싶어서 쓰는글... 푸념중... 나 혼자 못하는 것도 화나지만 나때문에 나를 도와주려는 사람들까지 힘드니까 정말 딱 다 도망치고싶다. 저번 프로젝트기간이 끝나고 멘탈 아그작 나있었는데 그 와중에 안 좋은 일도 생기고, aws lambda로 좀 더 현업에서 쓰이는 aws 기능들을 공부하려고하는데 진짜 이틀동안 놋북 끄면 눈감고 눈뜨면 켰다. 가능한 에러는 다 본것 같다. 그간 안일하게 git bash나 powershell 정도면 될 꺼라고 생각했다. 내가 지금 공부하려는게 정말 눈에 보이지 않는 gui 그 밑의 일들인데 왜인지 붕 뜬 마음으로 임해왔다. 단순히 ..

Day Review 2022.04.14

[AWS][lambda] s3 버킷sqs 알람 이벤트 설정

약 2-3일간 초보자 단계에서 볼 수 있는 에러란 에러는 다 만난 것 같다. 1. 트리거 중복문제 s3 버켓에 트리거를 걸고 싶었는데 중복으로 걸리는 문제라고한다. s3 > 속성 > 이벤트 알림 지우고 다시걸면 된다. 2. 람다 함수의 트리거에 sqs를 붙일 때, timeout error가 발생했다. 함수 제한 시간은 많은데 sqs의 제한 시간은 그보다 짧아서 sqs의 에러발생 타이밍을 함수가 잡지 못해서 발생한다. 함수가 먼저 에러가 발생했음을 알아야 sqs로 그 알람이 가야하기때문에 함수의 타임아웃 시간을 더 줄여줬다. 람다 함수 일반구성 > 시간 설정

Infra & DevOps/AWS 2022.04.14

[Powershell] json parse error

오늘의 꿀팁 눈을 크게 뜨자 cli 환경에서 인라인으로 작성된 데이터를 결국 json 형태로 변환해야 dynamodb에 넣을 수 있다. 다음은 그것을 위한 옵션이 붙은 invoke 명령어 aws lambda invoke를 호출해라 --payload : 뒤에 json으로 변형할 수 있는 포맷으로 string을 넣거나, true, false 형태의 데이터를 넣을 수 있다. --cli-binary-format raw-in-base64-out : 이진값으로 입력되는 매개변수 값을 해석할 수 있는 플래그 64 기반의 규칙을 명명한다. aws lambda invoke --function-name {Lambda함수의Arn를입력} --invocation-type Event \ --payload '{ "Metadata"..

그 외 메모 2022.04.13

[Serverless]마이크로서비스

서버리스의 의미는 무엇인가요? 서버리스란, 개발자가 서버를 관리할 필요 없게 해주는 서비스를 말한다. 서버가 없다는 뜻이 아니다. 어플리이션을 빌드하고, 실행, 각종 데이터 관리, 코드 실행 기술 등 개발 환경에서 서버를 관리 할 필요 없게 해주겠다는 클라우드 네이티브 개발 모델을 의미한다. 리액트 네이티브가 리액트를 기반으로 하는 어플리케이션을 의미하는 것 처럼, 클라우드 네이티브 개발 모델 역시 클라우드를 기반한 개발 모델이라는 뜻. IaaS처럼 사용자가 트래픽에 따라 직접 서버를 증/감 할 필요가 없는 기술 서비스. 서버는 기본적으로 하드웨어적 부분과 소프트웨어적 부분으로 이뤄져있는데, 클라우드 컴퓨팅 서비스란 벤더 업체들이 하드웨어적인 관리를 담당하고 그로써 활용 할 수 있는 소프트웨어적 부분들을..

Infra & DevOps/AWS 2022.04.06

[ECS] 배포 시 자주 발생하는 실수

- 대부분은 포트문제 로드밸런서 : 리스너 포트와 보안그룹의 미스매치 작업 정의에서 포트매핑 누락 서비스 보안그룹에서 인바운드 포트 누락 - 환경 설정의 누락 .env의 내용들 깃 레포지토리 > 세팅스 > 시크릿 - 로컬의 이미지와 ECR에 올라가 있는 이미지가 서로 다름 이미지 해시 값을 통해 이미지 확인하기 - 잘못된 로드 밸런서 사용 🌹 WAS에 NLB 연결, ALB 연결을 추천 나는 NLB와 mongoDB를 연결 한 상태인데 거기다 was까지 연결한 경우였다. 다른 티어의 작업이기 때무에 각 티어별로 다른 로드밸런서 연결

Infra & DevOps/AWS 2022.04.04

[AWS][ECS]task definition-service 메모

task definition을 바탕으로 task를 만들고 그 task는 service로 노출시킬 수 있다. cluster는 이러한 태스크의 모음 클러스터 생성 > 클러스트 탬플릿으로 네트워킹 전용 선택 > 클러스터 구성에 이름 알아서 > 시작 task definition 만들기 fargate 선택 > 작업 및 컨테이너 정의 구성에서 설정 시작 > 이름은 몽고, iam 새로만들기, 운영체제는 리눅스, 작업 크기는 그냥 작게 알아서 > 컨테이너 추가 > 컨테이너 이름 알아서, 이미지는 ecr에서가 기본, 근데 mongodb는 도커 허브에 있으니까 docker.io/mongo:latest, 포트매핑은 27017(공식문서 참조), tcp >고급 설정에 환경변수 설정, mongo_initial_유저네임, 패스워드..

Infra & DevOps/AWS 2022.04.02