Golang 에서의 ORM (GORM)

ORM(Object-relation mapping)은 객체지향 프로그래밍 언어를 사용해서 서로 다른 시스템간에 데이터를 호환성있게 변환하기 위해서 사용하는 프로그래밍 기술이다. ORM을 사용 할 경우 실실적으로 프로그래밍 언어에서 사용 할 수 있는 가상 객체 데이터베이스를 생성한다. 이 가상 객체 데이터베이스는 클래스(혹은 스트럭처)와 맵핑된다. 결과적으로...

Simple Web Server

Go언어는 "net/http"라는 웹 애플리케이션 개발을 지원하는 패키지를 제공한다. 매우 사용하기 쉽고, 강력하기 때문에 "다른 프레임워크 사용 할 필요 없다. net/http 만 써도 충분하다"라는 평가를 받기도 한다. 풀 프레임워크 목적으로 사용하기에는 부족하지만 REST API 서버 개발 목적이라면 이걸로 충분하다.package mainimport ...

Go언어에서 Tag 사용

Go 언어에서 json을 다루다 보면 아래와 같은 구조체를 볼 수 있을 거다.type User struct { Name string `json Age int `json}GoLang의 구조체(struct)의 필드는 Tag를 이용해서 메타정보를 추가하는 것으로 의미를 확장할 수 있다. 위의 구조체에서 Name과 Age 필드는 각각 json 필드와 매핑되며, n...

Marshal structs the right way: Golang

많은 Golang 초보자들이 struct를 json으로 마샬링하면서 실수를 하곤한다. 이 문서는 이 문제를 어떻게 해결했는지를 담고 있다. golang에서 정의된 필드를 사용하지 않는 비어있는 struct를 json으로 마샬링하면, 각 필드가 기본 값을 가진체 마샬링 된다. 때때로 이는 개발자를 혼란스럽게 한다. 아래 코드를 보자. package main...

GoLang과 DynamoDB

Go 언어를 이용해서 Dynamodb에 CRUD하는 방법을 살펴볼 것이다. 우분투 리눅스 19.04 Go version 1.12 AWS Cloud 서울 리전 데이터베이스 DynamoDB는 AWS의 관리형 NoSQL 데이터베이스다. 서버가 필요 없는 서버리스(ServerLess) 환경을 제공한다. 개발자는 가용성, 확장, 성능 등에 대한 고민 없이 개발 할 ...

Go Project structure Best Practices

원문 Go 애플리케이션의 구조는 다소 논쟁적인 주제가 될 수 있다. Go 애플리케이션에 대한 구조는 에 잘 정의되어 있다. 어떤 개발자는 참고하는 정도로 이용하지만 어떤 개발자는 반드시 이 구조를 따라야 한다고 주장하기도 한다. 내 입장은 "소프트웨어에서의 규칙은 가능하면 지키려고 하되 얽매일 필요는 없다"이다. 위 문서는 좋은 내용을 담고 있지만 이 도입...

Golang error 처리

Go로 프로그램을 개발하다보면, 내장된 error타입을 이용해서 에러를 처리하게 된다. 이 타입은 에러의 상태를 알려주기 위해서 사용한다. os.Open 함수의 경우 파일 열기에 실패했다면 nil이 아닌 error 값을 반환한다. os.Open의 선언을 보자.func Open(name string) (File, error)파일 디스크립터인 File, err...

NeoVim 기반 개발환경 설정

NeoVim과 CoC를 이용해서 개발 환경을 만들기로 했다. 개발 환경을 vi 기반으로 해보려고 하다가 결국 문서를 정리하게 됐다. 운영체제 사용언어 software-properties-common은 apt 레포지토리 관리를 위한 툴들을 제공한다. 이 툴을 이용해서 배포판을 관리를 쉽게 할 수 있다. # sudo apt-get install softwar...

Protocol Buffer

대대적인 수정 작업 중 .. 2019년 8월 20일Protocol Buffer(이하 PB)는 구글에서 개발한 직렬화 프로토콜이다. 구글 얘네들이 검색 색인 작업에 사용하려고 만들었다고 한다. 다양한 형태의 데이터를 대량으로 빠르게 직렬화&역직렬화 할 수 있다고 한다. 구글에서 다루는 데이터가 워낙에 다양하고 양도 많으니 당연한 요구사항 이었겠지. 을 대체...

GRPC

gRPC는 구글이 개발한 오픈소스 RPC(Remote procedure call) 시스템이다. HTTP/2와 Interface description language인 프로토콜 버퍼(Protocol Buffers)를 기반으로 하고 있다. 인증, 양방향 스트리밍, timeout, cancellation, 블럭킹, 넌블럭킹등의 기능을 제공한다. gRPC를 이용하...