분류 전체보기333 Prometheus - 살펴보기(first steps) - 출처: https://prometheus.io/docs/introduction/first_steps/ - 개요 Prometheus는 monitor 대상의 metric HTTP endpoint를 통해 정보를 긁어모아서 지표를 수집하는 모니터링 플랫폼이다. 이번 글에서는 prometheus 설치 방법과 환경설정 그리고 모니터에 대해 간단하게 살펴본다. prometheus를 다운받아서 설치하고 실행시켜보고 host와 서비스에서 시계열 데이터를 노출하는 exporter를 다운받고 설치해본다. 우선 prometheus 자체적으로 제공하는 host 수준의 다양한 지표들(ex - 메모리 사용, GC 등)을 이용하여 exporter를 별도 연동하지 않고 prometheus 자체적인 exporter로 사용해본다. -.. 2022. 1. 6. Go - Concurrency - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/concurrency - 개요 Go의 병렬 프로그래밍인 concurrency(go 문법)에 대해 알아보자. goroutine과 channel을 사용해본다. - CheckWebsites 예제 아래와 같이 URL 들의 응답 상태를 확인하는 CheckWebsites 함수가 있다고 하자. package concurrency type WebsiteChecker func(string) bool func CheckWebsites(wc WebsiteChecker, urls []string) map[string]bool { results := make(map[string]bool) for _, url :.. 2022. 1. 4. Prometheus - 개요 - 출처: https://prometheus.io/docs/introduction/overview/ - Prometheus란 Prometheus는 원래 SoundCloud(https://soundcloud.com/)에서 구축되었던 모니터링 & 알람 오픈소스 시스템이다. Prometheus는 label이라고 불리는 key-value 쌍들과 timestamp 정보와 함께 지표 데이터를 시계열(time series) 데이터형태로 저장하고 수집한다. - 주요 특징 프로메테우스의 주요 특징은 아래와 같다. metric명과 key-value 쌍들에 의해 식별되는 시계열 데이터 형테의 다차원 모델 이런 차원을 활용하는 유용한 Query 언어인 PromQL 제공 분산 저장소에 의존하지 않으므로 각 서버의 자율성 보장 .. 2022. 1. 2. Go - mocking - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/mocking - 개요 mocking에 대해 알아보고 mocking를 사용할 때 장점에 대해 알아본다. - Countdown 프로그램 3부터 하나씩 줄어드는 숫자를 출력하는 프로그램을 만들어보자. 단 각 숫자를 출력하기전에 1초를 멈추고 나서 출력한다. 0에 도달할 때는 0대신 Go!를 출력한다. package main func main() { Countdown() } 사실 프로그램이 맞나 싶을 정도로 보잘 것 없는 요구사항이지만 언제나 작은 단계의 성공적인 소프트웨어를 구축한 후, 이를 점차 반복적인 테스트 접근법을 통해 구축해야 한다. 이렇게 하려면 요구사항을 가능한 잘게 쪼갠 후 동.. 2022. 1. 2. Go - dependency injection - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/dependency-injection - 개요 Go의 표준 라이브러리의 인터페이스인 Writer를 이용하여 Dependency injection(이하 'DI')에 대해 알아본다. DI를 이용하면 test에 얼마나 많은 도움이 되는지 이해한다. - Dependency injection 한국의 국룰 프레임워크인 Spring을 써본적이 있다면 DI 라는말을 들어본적이 있을것이다. 용어도 멋있기 때문에 오해가 있는데 DI에 관한 약간의 오해를 줄이고자 한다. 우선 DI를 하기 위해 반드시 프레임워크가 필요한것은 아니다. 또한 코드나 디자인을 복잡하게 하지 않는다. test를 용이하게 하고, 함수.. 2021. 12. 31. Go - maps - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/maps - 개요 array와 slice에서는 데이터를 순차적으로 저장한다. go에서는 key를 기반으로 데이터를 저장할 수 있는 map을 제공한다. dictionary를 만들어 보면서 map에 대해 알아보도록 하자. - map package main import "testing" func TestSearch(t *testing.T) { dictionary := map[string]string{"test": "this is just a test"} got := Search(dictionary, "test") want := "this is just a test" if got != want .. 2021. 12. 31. Go - pointers & errors - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/pointers-and-errors - 개요 struct의 상태를 갱신하거나 크기가 큰 객체에 대해 값 복사를 하지 않고 참조하기 위한 pointer를 알아본다. 타 언어에서 null에 해당하는 개념인 nil을 알아본다. 또한 Error 처리를 간단하게 살펴본다. 이번에는 간단한 Bitcoin 입출금 시스템 구현 하면서 위에서 언급한 개념들을 살펴보자. - Pointer struct를 사용할 때 마치 Java의 setter처럼 상태를 관리하거나 상태를 변경하도록 메소드를 외부로 노출해야하는 경우가 있다. 이전 struct에서는 field에 직접 접근할 수 있었지만 이번에는 내부 상태를 외.. 2021. 12. 26. Go - struct, method, interface 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/structs-methods-and-interfaces - 개요 Go에서 관련있는 데이터를 연관시켜 표현할 수 있는 struct에 대하여 알아본다. structd의 method와 interface를 통한 다형성을 알아본다. - struct example 사각형의 너비와 높이가 주어졌을 때 둘레를 구하는 코드를 작성해보자. func TestPerimeter(t *testing.T) { got := Perimeter(10.0, 10.0) want := 40.0 if got != want { t.Errorf("got %.2f want %.2f", got, want) } } Perimeter를 구현.. 2021. 12. 24. Go - array, slice, test coverage 참조: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/arrays-and-slices - 개요 Go 에서 하나의 데이터 타입을 여러 개 저장할 수 있는 array 와 slice 에 대하여 알아본다. 또한 test coverage 와 array, slice 를 비교하는 reflect.DeepEqual 에 대해서도 알아본다. - Array & Slice Example array 의 수를 모두 더하면 얼마인지 구하는 기능을 구현해보자. 기능을 완성하고 나면 아래와 같이 array 를 인자로 받아서 단일값으로 반환하는 Sum 과 같은 함수를 호출할 것이다. test 값은 1,2,3,4,5 의 합이므로 기대값은 15이다. package main impo.. 2021. 12. 4. Go - Iteration & Benchmark 참조: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/iteration - 개요 Go 에서는 반복을 수행할 때 for 문을 이용한다. Go 에는 while, do, until 문이 없으며 for 문만 사용가능하다. 또한 단순한 Test 뿐만 아니라 자체적으로(표준 library로) 성능을 측정하는 Benchmark 도 지원하는데 이를 알아본다. - Example Code 특정 문자를 5번 반복하는 코드를 작성해본다. 우선 테스트 코드를 작성하자. TDD 접근법의 첫단계에서는 기능을 구현 했다고 가정한 후, 실제 결과값과 기대값을 비교하는 테스트 코드를 먼저 작성한다. 성급하게 구현을 어떻게 할지 미리 생각하지 않는다. iteration pack.. 2021. 12. 4. 이전 1 ··· 9 10 11 12 13 14 15 ··· 34 다음