golang(15)
-
Golang PGO 도입기
Golang PGO(Profile-guided optimization)목차PGO란?PGO의 원리Golang에서 PGO의 구현Golang에서 사용하기FAQ결론참고 자료PGO란?Golang 1.20에서 테스트 배포 후 유저의 피드백을 받아서 1.21 버전(2023년 9월 5일)에서 Production에 배포됐습니다. (링크) Golang에서 이전과 다르게 병목된 부분을 분석하기 위해서 프로파일링을 하는 것이 아닌 컴파일 단계에서도 어플리케이션을 최적화하기 위해서 도입됐습니다. 컴파일러 입장에서 컴파일 과정에서 프로그램을 실행해볼 수 없기 때문에 어떤 부분의 코드가 자주 실행되고 병목현상이 발생하는지 알 수 없습니다. 이 문제를 해결하기 위해 애플리케이션을 Profiling해서 데이터를 수집하고 컴파일 할때 ..
2024.06.24 -
go-grpc-gateway(2) go code 작성하기
그럼 1편에 이어서 go 서버를 실제로 만들어 보겠습니다. [golang/golang-webServer] - go-grpc-gateway(1) proto 작성해보기 go-grpc-gateway(1) proto 작성해보기 go-grpc-gateway golang을 활용해서 서버를 만들다가 go 서버간의 통신을 grpc를 사용하도록 확정했다. 하지만 몇가지 문제점이 있었다. 문제점 1. Client 친구가 rest로 모를뿐더러 grpc를 배우기엔 부담스 hoony-gunputer.tistory.com 우선 시작하기 전에 앞서 얘기했던 golang 라이브러리를 설치해야합니다. (1)의 과정을 완료했다면 terminal에 go mod tidy만 입력하면 필요한 라이브러리를 모두 설치할 수 있습니다. packag..
2021.08.03 -
go-grpc-gateway(1) proto 작성해보기
go-grpc-gateway golang을 활용해서 서버를 만들다가 go 서버간의 통신을 grpc를 사용하도록 확정했다. 하지만 몇가지 문제점이 있었다. 문제점 1. Client 친구가 rest로 모를뿐더러 grpc를 배우기엔 부담스러워 보였다. 친구가 처음 프로젝트를 진행하다보니 모르는 부분이 많아 최대한 간단히 rest로 클라이언트와 서버는 통신하고 싶었다. 2. 1번의 문제가 전혀상관 없이 현재 클라이언트와 서버는 grpc 통신을 할 수 없다. 브라우저는 현재 서버와 grpc 통신을 할 수 없다. -> 이러한 문제를 해결하기 위해 클라이어트와 서버 사이에 reverse proxy 서버를 두어 proto 작성한 api에 맞게 요청을 받을 수 있었다. 또한 클라이언트는 서버의 ip를 모르고 revers..
2021.08.02 -
GRPC란 무엇인가?
우선 설명에 앞서 간략하게 표로 비교해 확인해보겠습니다. 기능 grpc JSON을 사용하는 HTTP API 계약 필수(.proto) 선택 사항(Open API) 프로토콜 HTTP/2 HTTP Payload Protobuf(소형, 이진) JSON(대형, 사람이 읽을 수 있음) 규범 엄격한 사양 느슨함. 모든 HTTP가 유효합니다. 스트리밍 클라이언트, 서버, 양방향 클라이언트, 서버 브라우저 지원 아니요(gRPC-웹 필요) 예 보안 전송(TLS) 전송(TLS) 클라이언트 코드생성 예 OpenAPI + 타사 도구 여기서 평소에 오른쪽의 방법만 사용하다보면 왼쪽의 다양한 정보들이 어색해 보입니다. 이러한 것이 무엇을 뜻하는지 한번 알아 봅시다. Protobuf(Protocol Buffers) 프로토콜 버퍼는 ..
2021.06.07 -
golang http Server Router 설정하기
golang http Server Router 설정하기 [golang/golang-webServer] - golang http server 시작하기 ServeMux ServMux는 http package에서 추출된 구조체 타입이다. 들어오는 모든 요청을 처리하 수 있기때문에 ListenAndServe의 argument handler 또한 multiplexer이다. 당연히 ServeMux의 객체를 만들어서 handler argument에 넣어줄 수 있다. 이전 글의 예제에서 자기가 원하는 url path를 설정하여 요청을 받을 수 있다. 해당 url을 받은 후 그에 필요한 연산 및 특정한 응답을 해줍니다. 만약 ServeMux가 /api/, /api/users 리우트를 갖고 있고 client가 /api/u..
2020.04.16 -
golang http server 시작하기
golang http server 시작하기 1. 기본 tool 설정 go에서는 네트워크를 다루는 net package를 제공한다. net에는 http가 포함되어 있고 http 요청을 보낼 수 있는 클라이언트도 만들 수 있고 http 서버도 만들 수 있다. http package http 요청과 요청을 받을 수 있는 패키지입니다. 다른 언어들과 다르게 http 보안 서버를 만들 수 있게 제공합니다. import "net/http" 2. 간단한 http 서버 만들어보기 ListenAndServe 함수 func ListenAndServe(addr string, handler Handler) error 이 함수를 이용하영 http 서버를 시작하고 process를 lock 시킵니다. http 요청을 받을 수 있고..
2020.04.16