본문 바로가기

전체 글

[AWS]EC2 burting 비용절감 대부분의 워크로드는 평균적으로 사용량이 많지 않으며, 지속적으로 높은 CPU 사용량을 요구하지 않는다. AWS는 이와 같은 경우 컴퓨팅 리소스를 절약하고 더 나아가 사용자에게 비용을 절감할 수 있는 방법으로 bursting이라는 메커니즘을 제공한다. AWS에 따르면, CPU 사용률이 낮거나 중간 정도인 이러한 워크로드는 CPU 사이클의 낭비를 초래하고 결과적으로 사용한 것보다 더 많은 비용을 지불하게 됩니다. 이를 극복하기 위해 저비용 버스트 가능 범용 인스턴스인 T 인스턴스를 활용할 수 있습니다. EC2 인스턴스는 CPU, 메모리, 스토리지 등 세부적인 조건에 따라 다양한 유형이 있다. 그중 T 인스턴스 패밀리가 bursting을 지원하고 t3가 t2보다 더욱 최신 기술로 bursting을 잘.. 더보기
[모니터링]MBps vs. Mbps: latency 측정단위에 관하여 latency 측정단위 latency는 지연시간으로 어떤 서비스를 모니터링할때 판단할 수 있는 중요한 지표이다. 네트워크를 통하는 시간을 포함시키냐 마냐에 따라 다음과 같은 두가지로 나뉜다. seconds, milliseconds: 순전히 서비스에 응답, 요청에 따른 속도이다. MBps, Mbps: 서비스가 네트워크를 거쳐 응답, 요청에 따른 속도이다. 네트워크 상황에 따라 달라진다. MB vs. Mb 똑같은 글자지만 다른 의미를 지녔다. 이건 단위의 문제이다. bit은 가장 작은 데이터 단위로 0과 1같이 binary값이다. 1byte = 8bit 1Mb = 1,000,000bits 1MB = 1,000,000bytes 1GB = 1,000MB 1TB = 1,000GB 100Mbps: 1초에 100Mb.. 더보기
[모니터링]SLI, SLA, SLO 용어와 SRE 직무 SLA (서비스 수준 협약, Service Level Agreements) 서비스를 운영하는 데 있어서, 사용자에게 필요한 적정 수준을 정의하고 제공하기 위해, 서비스 제공자와 사용자는 서로 서비스 수준 협약(Service Level Agreements, SLA)을 맺는다. 가용성을 기준으로 예를들어 본다면 1년간 99%의 업타임을 제공해야한다. 다음과 같은 세부적인 시간을 계산해 낼 수 있다. SLI (서비스 수준 척도, Service Level Indicator) 위의 가용성 뿐만아니라 다양한 지표들이 SLA에 포함될 수있다. 그리고 고객과의 약속이라는 것은 "어느 정도의 서비스를 제공해야 제대로 제공했다고 말할 수 있는 것인지"를 정확하게 명시하지 않으면 안됩니다. SLI는 이런 서비스 수준을 판단.. 더보기
[JS]재귀함수 예제 재귀함수란? 함수가 자신을 다시 호출하는 구조로 만들어진 함수이다. 재귀함수는 종료조건이 있어야 하며, 종료조건을 설정해주지 않으면 무한 반복을 하게된다. 재귀함수로 작성이 되는 코드는 반복문으로도 작성할 수 있다. 배열의 각 요소 추출(재귀함수 활용) head와 tail을 나누어 호출하면된다. 이때 tail은 slice를 통해 head 나머지 부분을 의미하도록 하고, 이를 재귀호출을 통해 head 값을 계속 끌어낸다. 확실히 반복문보다 코드가 깔끔하게 짜지긴하나, 생각하는데 좀 어렵긴하다. Q1. 수(num)를 입력받아 1부터 num까지의 합을 리턴해야 합니다. function sumTo(num) { if (num === 0) {return 0} if(num 더보기
[모니터링]프로메테우스+그라파나 모니터링 시스템 구축 실제 모니터링은 어떻게 진행되는지 알아보기 위해 모니터링 시스템을 구축해볼 것이다. 모니터링에서 중요한 것은 데이터를 질의할 수 있는 언어 PromQL에 대한 세부적인 학습보다 전체적으로 서비스를 모니터링할 때, 어떠한 메트릭을 봐야 하고, 그 메트릭을 어떻게 볼 수 있는지 아는 것이 더욱 중요하다. 따라서 이번 스프린트에서는 구체적인 모니터링 시스템 구축보다는 구축 후 SRE 모니터링의 주요 측정 항목인 "네가지 황금 시그널"을 살펴볼 것이다. Prometheus 및 Grafana 설치 // 클론 git clone https://github.com/prometheus-operator/kube-prometheus.git // 클론한 디렉토리에서 설치, kube-prometheus 배포 # STEP 1 k.. 더보기
[모니터링]쿠버네티스 모니터링, 프로메테우스 Q. 모니터링의 관점에서 워커 노드에 애플리케이션을 별도로 배치하는 것이 왜 유리할까요? A. 쿠버네티스의 구조상 통상적으로 API서버와 주로 통신을 합니다. Pull기반 시스템인 프로메테우스는 주기적으로 스크랩해야 하는 엔드 포인트 목록을 관리합니다. 이 목록은 정적이거나 서비스 검색 시스템으로 자동 업데이트될 수 있습니다. Prometheus는 엔드포인트 목록을 사용하여 메트릭을 스크랩하고 내부 시계열 데이터베이스에 저장합니다. 저장된 메트릭은 API를 사용하여 직접 쿼리하거나 Grafana 대시보드로 시각화할 수 있습니다. 더보기
[모니터링]프로메테우스, 모니터링 도구 프로메테우스(Prometheus)란? 모니터링 도구이다. 왜 프로메테우스를 쓸까? 마이크로 서비스, 클라우드 아키텍처가 적용되면서 DevOps가 훨씬 복잡해졌다. 컨테이너화된 애플리케이션이 다양한 컴퓨터에서 실행되고, 많은 프로세스들이 실행되며 그들은 서로 연결되어 있다.(마이크로서비스) 따라서 자동화가 필요하다. 엔지니어는 하드웨어 또는 애플리케이션 수준에서 잘 작동하는지 모니터링해야하는데, 너무너무 복잡하다. 애플리케이션 Error는 뜨는지, Response Latency가 너무 늦진 않은지, 애플리케이션이 Overloaded되진 않았는지, 하드웨어의 리소스가 애플리케이션을 실행하기에 충분한 리소스가 있는지.. 확인할 것들이 너무 많다. 만약 버그가 발생하여 다른 서비스에까지 장애를 일으킨다면 큰일이.. 더보기
[JS]arr의 다양한 메소드 arr.map() 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. arr.reduce() 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. Q1. 수를 요소로 갖는 배열을 입력받아 각 요소를 2배 곱한 새로운 배열을 리턴해야 합니다. function getDoubledElements(arr) { if (arr === []){return []} return arr.map(x => x*2) } Q2. 문자열을 요소로 갖는 배열을 입력받아 각 요소의 길이를 요소로 갖는 새로운 배열을 리턴해야 합니다. function getLengthOfElements(arr) { if (arr === []){return []} .. 더보기