golang(18)
-
# gRPC - gogoproto extension 사용하기
안녕하세요. 해커의 개발일기 입니다. 앞서 다뤘던 # gRPC 개요 및 proto 파일 정의 에 이어서 조금 심화된 이야기를 하고자 합니다. gRPC를 사용하면서 마음대로 데이터를 처리하고자 하지 못한 경우가 있었습니다. 이유는 protoc 컴파일을 통해 만들어진 go.pb 파일에 setter가 필요해서 수정해서 사용을 하다가, 지속적으로 필요한 부분을 추가로 코딩해서 사용하고 있었습니다.. 하지만 말씀드렸다시피 이렇게 사용하다보면 어느샌가 메시지 타입이 맞지 않는다는 에러가 발생하게되고 코드로 찾을 수 없는 혼돈의 카오스에 진입하게 되는데요 .. 이런 이슈를 겪고 나니 어떻게 내가 원하는 size, marshaler, getter, setter를 자동으로 만들어 줄 수 있을까? 라는 고민을 하게되었고 ..
2021.05.30 -
# gRPC 개요 및 proto 파일 정의
안녕하세요. 해커의 개발일기 입니다. 오늘은 MSA 구조에서 많이 쓰기고 있는 GRPC에 대해서 알아보도록 하겠습니다. 저도 회사에서 많이 사용하고 있기 때문에 처음에는 다른 사용법에 조금 헤멧지만 지금은 gRPC가 정말 편리하다는 것과 성능적으로 우월하는 점을 잘 알고 있기 때문에 초보적인 사용법과 더불어 심화된 내용 및 proto 파일 정의 내용도 다룰 예정입니다. gRPC와 proto 파일에 대해서 알아보겠습니다. gRPC는 구글에서 개발안 오픈소스 원격 프로시저 호출(RPC) 시스템이고 전송을 위해서 HTTP/2를 사용하고 인터페이스 정의 언어로는 포로토콜 버퍼(.proto 파일)을 사용하고 있습니다. 기본적으로 gRPC는 HTTP/2 베이스기 때문에 외부에서 노출되어야 하고 로드밸런서 적용이 필..
2021.05.30 -
# Kubernetes Cluster Architecture
안녕하세요. 해커의 개발일기 입니다. 오늘은 지난번에 소개했던, 컨테이너 오케스트레이션인 Kubernetes의 기본적인 아키텍처를 소개하려고 합니다. Kubernetes의 목적은 자동화된 방식으로 Container 기반의 Application을 호스팅하는 것 인데요. 이런 목적을 달성하기 위해서 Kubernetes 아키텍처를 이루는 컴포넌트들이 어떤 것들이 있고 어떤 기능을 통해 Kubernetes의 목적을 달성하고 있는지 알아보도록 하겠습니다. 쿠버네티스 클러스터는 물리적 또는 가상의 노드 집합으로 구성되어 있습니다. 이 노드 집합의 클러스터에서 논리적으로 Master 노드와 Woker 노드로 구분됩니다. 실제로 컨테이너를 띄우고 제어하는 것은 Worker 노드가 하게 되며, Master 노드는 컨테이..
2021.05.02 -
# IaaS 오픈소스 OpenStack 개요, OpenStack SDK 사용법(Golang)
안녕하세요. 해커의 개발일기 입니다. 게으름을 핑계로 정말 오랫만에 글을 쓰는 것 같습니다. 개인적으로 하고 있는 프로젝트도 있고, 공부할것도 많고 대학원 공부도하고 .. 하루가 48시간이었으면 좋겠습니다... 오늘은 IaaS가 어떤 것인지에 대해서 알아보는 시간을 갖고, IaaS 오픈소스 프로젝트인 OpenStack, 이어서 Golang OpenStack SDK 사용법을 알아보도록 하겠습니다. 먼저 IaaS가 뭘까요 ? 가장 간단하게 해석해보겠습니다. IaaS는 Infrastructure as a Service의 약자인데요 네트워크, 스토리지, 서버 등 필요에 따라 인프라 자원을 사용할 수 있게 클라우드 서비스로 제공하는 것 쓰다보니 위키백과와 같아졌네요 .. ㅎㅎ 자, 이렇게 말씀드려도 이해가 안가신..
2020.11.16 -
# Opentracing Jaeger-client golang/JAVA applicaion에 적용하기[Golang 편]
안녕하세요. 해커의 개발일기 입니다. 오늘은 마이크로 서비스 아키텍처를 사용하여 구축된 응용 프로그램을 프로파일링하고 모니터링하는데 사용하는 Distributed Tracing 분산 추적 기술에 중! 오늘은 지난번에 소개해드렸던 https://bourbonkk.tistory.com/84?category=794341 # 오픈소스 OpenTracing - Jaeger 안녕하세요. 해커의 개발일기 입니다. 오늘은 마이크로 서비스 아키텍처를 사용하여 구축된 응용 프로그램을 프로파일링하고 모니터링하는데 사용하는 Distributed Tracing 분산 추적 기술에 대해서 bourbonkk.tistory.com instrumentation 작업을 통해 latency를 측정하고자 하는 곳에 코드를 심어주게 되면 서비..
2020.08.23 -
# Dockerfile로 임시 빌드 환경 구성하기(Dockerfile 응용하기)
안녕하세요. 해커의 개발일기입니다. 오늘은 별도의 빌드환경에서만 빌드가 되는 경우 Docker를 사용해서 임시로 build 환경을 구성하고 빌드된 바이너리만 가지고 새로운 Docker 이미지에 넣는 것을 해보려고 합니다. 이런게 왜 필요할까요? 오픈소스의 경우 대부분의 개발자들이 리눅스 환경에서 개발을 하기 때문에 윈도우에서 환경에서 개발하는 우리는 빌드할 때 에러가 자꾸 발생합니다.. 저를 예를 들면 저는 프로젝트에서 시계열 디비(tsdb)인 Prometheus(프로메테우스)를 커스텀해 솔루션의 모듈로 사용하고 있습니다. 그런데 빌드할 때 react 소스코드도 들어가고 이 소스코드를 다시 golang으로 감싸서 하나의 바이너리로 만드는 과정이 있는데요 .. 이 과정에서 윈도우 환경인 경우 정말 끊임 없..
2020.08.13