일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- nft민팅
- 코인
- 투자
- 채산성
- 코로나
- Arweave
- 민팅
- 가상자산
- filfox
- nft
- 공증인
- 레이어2
- 비트코인
- BTC
- 알위브
- 스토리지코인
- 파일코인플러스
- 스토리지
- datacap
- 파일코인
- Q-code
- 바이낸스
- Mining
- 채굴
- 암호화폐
- MATIC
- FILECOIN
- 이더리움
- FIL
- 데이터캡
- Today
- 96
- Total
- 125,460
목록전체 글 (259)
Blockchain & Devops, bitetiger

시스템 성능을 파악하는데 주요 메트릭은 Throughput과 Latency다. Throughput 시간당 처리량을 의미한다. 1초에 처리하는 HTTP 요청(Request) 수 혹은 네트워크로 전송되는 데이터 전송 속도가 대표적이다. Throughput을 개선하기 위해서는 병목 구간이 어디인가를 먼저 파악하는 것이 중요하다. 대체로 2가지의 개선방법이 있다. 어플리케이션 개선 : 개발된 어플리케이션을 개선하는 것이다. 현상을 먼저 파악 (APM, Application Performance Monitoring)을 시작으로, 알고리즘 개선, I/O 최소화 등의 개선 방안이 따른다. DevOps가 이를 모니터링하고 개발자가 여러 도구를 통해서 개선해야한다. 하위 시스템의 확장 : 대부분 Throughput 개선..

가용성과 확장성 가용성(Availability)는 시스템이 정상적으로 사용 가능한 정도를 의미한다. 정상 사용시간(Uptime)을 정상사용시간과 사용불가시간(Downtime)을 합친 전체 사용시간으로 나눈값을 표현한다. 가용성 99.95%는 1년에 4시간 22분의 다운타임이 된다. 서비스 사용 불가시간을 최소로 하는 것이야말로, 더 높은 가용성을 달성하는 것이다. 또한, 가용성의 핵심으느 단일 장애점(Single Point of Failure)를 없애는 것이다. 어떤 한 노드가 장애가 발생하더라도, 다른 노드가 대체할 수 있어야한다. 이것을 시스템 확장이라고 말한다. 확장성(Scalability)은 요구되는 시스템의 성능에 따라서 동적으로 서버 구성이 변경되고, 시스템 처리 능력을 최적화할 수 있는 것을..
SLI(서비스 수준 척도, Service Level Indicator) 서비스 수준을 판단할 수 있는 정량적인 측정 값이다. 응답속도: 요청에 대한 응답이 리턴되기까지의 시간 에러율: 전체 요청 수 대비 에러 처리량: 초당 처리할 수 있는 요청 수 가용성: 서비스가 사용가능한 상태로 존재하는 시간 비율 내구성: 데이터 저장이 중요한 경우 SLO(서비스 수준 목표, Service Level Objectives) SLI를 기준으로 서비스의 목표를 정한다. SLI

지난 프로젝트2를 기억하면 늦게 합류해서 정신없이 하다가 애매하게 마무리했던지라, 이번 프로젝트3는 '1인분이라도 하자'는 심정으로 시작했다. (프로젝트2는 도움을 많이 받았으나, 이번에는 내가 누군가에게 도움이 될 수 있으면 좋겠다는 작은 바램과 함께) 돌이켜보면 프로젝트를 할때마다, '코딩'에서 많이 헤맸다. 그래서 이번 프로젝트를 시작하기 전에 지난 스프린트들의 코드들을 한번 더 살펴보고 AWS 서비스들을 구성하는 연습을 했다. 결과적으로, 이번 프로젝트는 다행히도 1인분?은 한것같다. 처음 tutorial에서 서버리스 부분에서 헤맸지만, 본격적인 msa 구성에서부터 조금씩, 스스로 나아갈 수 있었고 팀원과 고민하고 작은 도움도 줄 수 있었다. 이전과는 다르게, 전체 코드를 간단히 파악해서 작은 수..

프로메테우스는 오픈소스 모니터링/알림 시스템이다. 쿠버네티스와 노드, 프로메테우스를 모니터링할 수 있다. 쿠버네티스를 지원하는 재단 CNCF가 프로메테우스를 관리하고 있고 이 두 도구의 시각화를 담당하는 Grafana를 포함, 이 세 가지가 한 묶음으로 많이 쓰이는 편이다. Prometheus 구성요소 시계열(Time series) 데이터를 저장 다양한 exporter로부터 대상의 메트릭을 pull하여 주기적으로 가져오는 모니터링 시스템 Alert manager로 경고, 알람 설정 사용자가 직접 질의가능한 Web UI(PromQL언어 사용) 쿠버네티스 exporter 프로메테우스는 쿠버네티스 메트릭을 가져올 수 있는 쿠버네티스 exporter가 있다. exporter는 kube API를 사용한다.

TEST - 1 function hello(){ return 'hello'; } async function helloAsync(){ return 'hello Async'; } console.log(hello()); helloAsync().then((res)=>{ console.log(res); }) async를 선언한 함수의 리턴값은 resolve의 결과값이 된다. TEST - 2 function delay(ms){ return new Promise((resolve)=>{ setTimeout(resolve, ms) }) } // 3초 기다린뒤 hello Async 반환하는 것 async function helloAsync(){ return delay(3000).then(()=>{ return "hello..

비동기 작업이 가질 수 있는 상태 pending : 대기상태, 비동기 작업이 진행 중 fulfilled : 비동기 작업이 의도한대로 작업 완료된 상태 rejected : 비동기 작업이 실패한 상태 비동기 처리는 이 세가지 상태를 갖는다. 한 번 성공 및 실패하면 거기서 끝난다. fulfilled로 가는 과정을 해결(Resolve)라고 하며, rejected로 가면 거부(Reject)되었다고 한다. TEST - 1 function isPositive(number, resolve, reject){ setTimeout(() => { if(typeof number === "number"){ //성공 -> resolve resolve(number >=0? "양수":"음수") } else { //실패 -> reje..

Load Average? 프로세스의 여러 상태에서 Running(자원을 소모하고 있는 실행 상태), Uninterruptible Sleep(I/O 작업 처리를 대기 중인 ps상태, D 라고도 한다)에 있는 프로세스들의 개수를 1분, 5분 15분 단위로 평균을 만든 것이다. 값이 작을 수록 부하가 덜되었다는 의미 0.00 : CPU 사용률이 없다 (싱글코어 기준) 1.00 : CPU를 100% 사용 (싱글코어 기준) 1.00 이상인 경우, 2.00은 50%는 처리중, 50%는 대기중 (싱글코어 기준) *1분 동안의 값이 15분에 비해 작으면 이는 장애가 발생한지 좀 지난 것으로 해석할 수 있다. *15분 값에 비해 1분과 5분 값이 높으면 부하가 심해지고 있다고 해석할 수 있다. 여기서 Load Avera..

모니터링의 목표 1. 시간 기준으로 측정되는 주요 메트릭을 최소화, 고가용성 달성 2. 사용량 추적을 통해 이전에 세운 가설을 검증, 개선 * 메트릭(Metric) 메트릭은 시간에 따라 측정한 결과값이다. 큰 의미로는 비즈니스 개념을 나타내는 수치 측정을 의미하기도 한다. 간단한 예로는 연간 순매출, 시간당 CPU 사용률 등 시간 개념과 함께 적용된다. 시간외에도 다른 기준으로 삼을 수 있다. 모니터링 메트릭 및 목표 by 구글 1. 장기적인 트렌드 분석 데이터베이스의 예상 용량, 용량의 증가 속도 확인 DAU(일간 활성 사용자수)의 증가 속도 2. 시간의 경과 및 실험 그룹 간의 비교 DB별 쿼리 속도 확인 캐시용 노드 추가 시, 캐시 적중률(hit rate) 확인 3. 경고 인프라 예상 문제 및 문제..

JSON.parse JSON 문자열을 파싱한다. 파싱은 문장을 문법적 부분으로 나누고, 나누어진 부분을 식별하는 것이다. 쉽게 말해서, JSON을 : 관계로 식별한다. client-server 통신에서 server가 client에게 전달하는 데이터는 문자열이다. JSON.parse()를 사용하면 데이터를 파싱해서 Javascript 객체로 변환해준다. const jsonStr = '{"Age": "30", "Name": "Kang"}'; const obj = JSON.parse(jsonStr) // JOSN.parse사용 console.log(obj) 파싱 전의 데이터는 단순 문자열이기 때문에 parse를 해야말 데이터에 접근할 수 있는 Javascript Object가 된다. 파싱이되어야 원하는 key..