Golang Application을 docker compose로 개발하기

docker compose를 이용하면, Docker 네트워크를 통해서 여러 개의 컨테이너로 구성된 서비스를 구축할 수 있다. 여기에서는 docker compose를 이용해서 MySQL 데이터베이스를 사용하는 Go 애플리케이션을 만들어 볼 것이다. ...

Golang Application docker 빌드

Go 애플리케이션을 Docker image로 만들려고 합니다. 간단한 hello-world http 애플리케이션을 GoLang으로 개발하고 GoLang docker image를 이용해서 컨테이너에서 빌드하고 이를 Docker 이미지 형태로 만들어 봅니다. 향후 MSA 기반의 Go 애플리케이션을 만드는데 도움이 될 겁니다....

Golang - future

컴퓨터 공학에서 future, promise, delay, deferred는 동시성 프로그램에서 계산이 완료되지 않은 결과에 대한 프록시 역할을 하는 객체를 설명하기 위해서 사용한다. 알 수 없는 미래에 완료될 계산을 기다리고 처리하기 위한 객체다.Futures 와 promises는 함수형 프로그래밍과 그 관련 패러다임에서(logic programming)...

GoLang 포인터 101

포인터라는 개(멍멍이)가 있다. 이 개는 사냥감의 위치를 가리키는 일을 한다. 위치 정보를 알려주는 녀석이라고 보면 되겠다. 소프트웨어 개발에서 포인터도 마찬가지다. 소프트웨어의 가장 중요한 일은 데이터를 읽고 쓰는 것인데, 이 데이터들은 메모리에 위치한다. 데이터가 저장된 메모리의 주소를 우리는 메모리 주소라고 하며, 0x123456 과 같은 16진수로 ...

GoLang를 이용한 템플릿 엔진

Joinc 사이트는 PHPNuke로 시작했다. 그러다가 모니위키(moniwiki)로 갈아탔다. 그렇게 거의 15년 정도를 모니위키로 운영하다가 직접 개발한 위키엔진(엔진의 이름은 gowiki다. gowiki인 이유는 golang으로 개발해서다.) 으로 갈아탔다. 갈아탄 이유는 아래와 같다. 파일기반이라서 너무 느리다. 파일기반이라서 확장에 한계가 있다.g...

견고하고 확장가능한 Go 애플리케이션 개발 - 2

후속이다.지난 문서에서 Go 애플리케이션에 클린아키텍처를 적용했다. 하지만 구조만 잡았지 세부적인 것들은 생략하고 넘어갔다. 여기에서는 테스트를 비롯하여 해당 애플리케이션이 정말로 유연하고 확장가능한지를 사례를 기반으로 살펴볼 것이다. 먼저 지난 번에 다뤘던 아키텍처를 간단히 정리하겠다. 애플리케이션은 여러 개의 레이어로 구성한다. 이때 의존성은 안쪽으로...

견고하고 확장가능한 Go 애플리케이션 구축 방법

Go 언어를 이용해서 백앤드 애플리케이션을 개발한다. 이 애플리케이션은 유저정보를 저장하고, 조회하는 2개의 REST API를 제공한다. 이 애플리케이션을 구조적으로 견고하고 확장가능한 형태로 만들어보려 한다. 아이디어는 에서 가져왔다. 이 문서에서는 클린 아키텍처의 제약 조건을 아래와 같이 설정하고 있다. 1. 프레임워크와 무관하다. 아키텍처는 특정 소...

GoLang Json의 거의 모든 것

JSON(JavaScript Object Notation)는 속성-값 쌍의 형식을 가지는 개방형 표준 파일 포맷으로 데이터 교환에 사용 하고 있다. JSON은 언어 독립적인 데이터 형식이지만 JavaScript 프로그래밍 언어에서 직접 생성하고 읽을 수 있기 때문에, 웹 애플리케이션에서 사용하기에 적합하다. 이런 이유로 특히 웹 애플리케이션에서 널리 사용한...

Golang Middleware

미들웨어(Middleware)는 소프트웨어 구성요소의 입력과 출력 사이에서 데이터를 처리하는 시스템이다. 따라서 개발자는 응용 프로그램의 목적에만 집중 할 수 있다. 웹 서버의 경우에는 데이터베이스 액세스, 보안, 인증, 로깅과 같은 작업을 처리하기 위해서 사용한다. 이들 기능은 모든 서비스에 공통적으로 사용되기 마련이다. 이런 작업들을 미들웨어에서 대신 ...

GoLang 1.16

2021년 2월 16일 Go 1.16이 발표됐다. Go 1.16은 에서 다운로드 할 수 있다. 곧바로 설치했다. # wget https# tar -xvzf go1.16.linux-amd64.tar.gz /usr/local # go versiongo version go1.16 linux/amd641.16의 주요 기능은 아래와 같다. embed package ...