Elasticache for Memcached Memcached Go Library 이용하기 Local Memcached with Docker DOCKER를 이용하여 Memcached 실행하기. docker run -d -p 11211:11211 memcached go module 가져오기 모듈 초기화 하기 go mod init github.com/schooldevops/memcached memcached 라이브러리 획득하기 go get github.com/bradfitz/gomemcache/memcache 샘플 코드 작성 package main import ( "fmt" "github.com/bradfitz/gomemcache/memcache" ) func main() { // Memcached에 커넥..
Go Polymorphism 구현하기 Go 에서 Polymorphism 을 구현하기 위해서는 interface를 이용하여 타입을 구성하고, 이를 실제 구현하는 방법이 있다. 이번 아티클에서는 Polymorphism을 이용하여 도형의 넓이를 구하고 도형의 이름을 출력하는 예제를 만들어 볼 것이다. Go 모듈 생성하기 Go 에서는 기본적으로 GOPATH에서 소스를 작성하는 것으로 가정하고 개발이 진행된다. 그러나 이렇게 하나의 PATH로 지정하면 여러 프로그램을 개발할때 매우 불편할 것이다. 이를 해결하기 위해서 Go에서는 모듈을 제공하고 각기 다른 모듈을 생성할 수 있도록 해주고 있다. 우리는 polymorphism 이라는 모듈을 생성할 것이다. go mod init polymorphism 위 결과 go...

Private GitHub로 Go 모듈 리포지토리 이용하기 go module을 이용하면, 복잡한 패키지를 편하게 관리할 수 있다. go package들을 관리하기 위해서는 module repository 에 모듈을 올려두고, 이를 'go get' 을 이용하여 모듈을 가져올 수 있다. 리포지토리는 GitHub 에 private로 생성해두고, 이를 패키지 리포지토리로 이용할 수 있다. GitHup 리포지토리 생성하기. GitHub에서 다음과 같이 리포지토리를 생성하자. 리포지토리 이름: go-module-repo Description: Go Module Repository Private: 비공개 모드로 설정한다. 위와 같이 생성하자. 위와 같이 리포지토리 정보를 확인할 수 있다. 모듈 생성하기. 이제는 모듈..
grpc with API Gateway Grpc 와 API Gateway 를 이용하여 REST API 지원하기. initial go module go mod init echo-grpc install module go get "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" go get "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" go get "google.golang.org/grpc/cmd/protoc-gen-go-grpc" go get "google.golang.org/protobuf/cmd/protoc-gen-go" Copy google api for grpc..
Write Response Module 이번에는 공통적인 쓰기를 이위한 응답 모듈을 작성해 보자. REST API 는 단순히 JSON 으로 응답을 보내는 경우도 많고, 단순 텍스트를 응답으로 보내는 경우가 많다. 그러나 좀더 개발을 편리하게 하고, 공통적인 응답 구조를 작성하기 위해서는 응답 모듀를 별도로 작성하는 것이 좋다. 정상 케이스 응답 모듈 작성하기. 우리는 응답 모듈을 작서하기 위해서 response.go 파일을 하나 만들고 이를 이용할 것이다. response.go 파일을 다음과 같이 작성하자. package main import ( "encoding/json" "net/http" ) func responseWithJSON(w http.ResponseWriter, code int, paylo..
파라미터 처리 이번에는 파라미터 처리에 대해서 알아보자. Path Variable 사용하기. 지금까지 라우팅을 통해서 엔드포인트에 대한 핸들러 등록을 수행했다. 이제부터는 리퀘스트를 분석하는 방법을 알아보자. Path Variable /api/users/{id} 와 같이 {id} 에 대한 값을 PathVariable 이라고 한다. 이 id 에 해당하는 값은 URL encoding 된 어떠한 값이든 가능하다. api_users.go 파일에서 UserById 함수를 다음과 같이 수정하자. func UserByID(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) userID := vars["id"] fmt.Fprintf(w, "UserByID :%..
Route using module REST API 를 만들면 각 서비스 도메인에 따라 라우팅도 다양하게 일어나야한다. 이럴때 이전 예제와 같이 라우팅을 하나의 go 파일에 모두 작성하면 파일이 비대해지고, 관리도 쉽지 않게 될 것이 자명하다. 이럴때 Route를 수행하는 모듈을 만들고 코드를 분리하면 관리도 편하고, 필요에 따라 코드 작성도 쉽게 수행할 수 있는 이점이 있다. Route 모듈 작성하기. 지금은 패키지를 사용하지 않고 동일한 패키지 내에서 라우팅 모듈을 작성할 것이다. route_module.go 파일을 하나 만들고 다음과 같이 모듈을 작성하자. package main import ( "net/http" "github.com/gorilla/mux" ) // 핸들러 구조체를 작성한다. // ..
Routing 이번에는 좀더 Routing 에 대해서 깊이 있게 알아보자. HTTP Method 웹은 기본적으로 CRUD를 위한 GET, POST, PUT, DELETE 를 제공한다. 그 밖에도 HEAD, PATHCH 등 다양한 메소드를 제공한다. 이전 예제에서 핸들러를 단순 등록하면 모든 Method 를 받아 들일 수 있다. 그러나 이는 좋은 방법이 아니며, 용도에 맞는 메소드를 지정하여 endpoint 를 열어주는 것이 필요하다. Method 이용하기. main.go 에 다음과 같이 내용을 변경해보자. package main import ( "fmt" "html" "log" "net/http" "github.com/gorilla/mux" ) func main() { r := mux.NewRouter(..
Install Gorilla For Web Server 지난번에는 http 모듈을 이용하여 웹 서버를 구현했지만 웹 서버를 편하게 개발하기에는 그리 좋은 모듈은 아니다. 이번에는 Gorilla 를 이용한 웹 서버를 만들어 볼 것이다. Install Gorilla Gorilla 를 설치하기 위해서 다음 명령을 콘솔에서 실행하자. go get github.com/gorilla/mux go 에서는 go get 을 이용하면 필요한 모듈을 설치할 수 있다. main.go 수정하기. 이제는 Gorilla를 이용하여 동일한 기능으로 웹 서버를 만들어 보자. import ( "fmt" "html" "log" "net/http" "github.com/gorilla/mux" ) func main() { r := mux.N..
Build a basic web server Go 언어는 가볍고 빠르며, 효율적인 자원 사용으로 현재 매우 인기가 급상승하고 있는 프로그래밍 언어이다. 서버 개발 및 웹 서비스까지 매우 다양한 용도로 이용되고 있으며, 이번 아티클에서는 간단하게 웹 서비스를 수행할 하는 예제를 작성해 볼 것이다. Go http 모듈 우리는 우선 간단한 웹 서버를 만들어 볼 것이다. https://godoc.org/net/http 에서 net/http 모듈을 사용하여 간단한 웹 서버를 만든다. Hello World 서버 package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *ht..
- Total
- Today
- Yesterday
- Gorilla
- jenkins
- D3
- CD
- mongo
- kubernetes
- MySQL
- gitops
- NodeSelector
- Golang
- docker-compose
- kafka-springboot
- Terraform
- Spring
- argocd
- java
- jpa
- mapping
- AWS
- CI
- kubectl
- deploy
- docker
- Kafka
- go
- springboot
- Database
- tfsec
- declative
- MongoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |