brunch

You can make anything
by writing

C.S.Lewis

by 에디의 기술블로그 Feb 09. 2019

[Go lang] Go 프로그래밍 개발환경

- 두시간만에 경험해보는 GO 프로그래밍 입문

이번 주말 토요일에는, Go 프로그래밍 개발환경을 셋팅하고 간단하게 Hello World 를 실행해보겠다. 셋팅하고 글 쓰는데 두시간 정도 걸린 것 같은데, 필자가 최대한 빠른 시간을 투자해서 대충 쓴 글이라서 내용이 매우 허접하다. 이해해주길 바란다. 참고로 Go Programming 은 현재 업무에서 전혀 사용하지 않기 때문에 집중해서 공부할 여유는 없을 것 같다. 그래도, 시간 날때마다 틈틈히 공부를 해보겠다. 


Go Programming


Go 는 구글이 개발한 프로그래밍 언어이다. 가비지 컬렉션 기능이 있고, 병렬 프로그래밍을 잘 지원하는 컴파일 언어이다. 자세한 설명은 생략한다. 

https://golang.org/



윈도우 환경에서 Go lang SDK 설치


SDK 를 설치하자. 운영체제에 맞게 SDK 를 설치한다. 

https://golang.org/dl/

필자는 윈도우 버전으로 설치하였다. 


설치는 금방 된다. Go SDK 설치하면 자동으로 환경변수 설정이 된다. 일부 다른 블로그를 보면 환경변수를 직접 추가해야 한다는 글이 많은데, 필자는 따로 설정은 하지 않았다. 인스톨을 하면 자동으로 등록이 되었다. 정확히 잘 모르겠지만, 어쨋든 시스템 변수 - 환경변수 편집을 확인해보면 Go bin 디렉토리가 등록되어있는 것을 확인할 수 있다. 


SDK 설치가 되었고 환경변수 설정도 잘 되었으니 아래와 같이 CMD 에서 확인을 해보자. 필자는 go 1.11.5 버전으로 설치가 되었다. 



윈도우 환경에서 Hello World 실행


필자는 Visual Studio Code 에서 코딩을 하겠다. 일단 먼저 Go 플러그인을 설치하자. 

그리고, 심플한 go 언어를 작성해보자. Visual Studio Code 에서 Go 관련 설치를 하겠는지 알림 메시지를 띄우는데, 필자가 캡처를 못했다. 어쨋든, install all 을 선택하면 아래와 같이 설치가 진행되는 것을 확인할 수 있다. 뭔지는 모르겟지만 일단 go 초밥이니깐 어쩔수 없이 Visual Studio Code 를 믿고 가자.

근데, 설치 하는 중에 일부 모듈은 실패가 뜬다. 역시 왜그런지 자세히는 모르겠다. 어쨋든 마지막 멘트는 설치가 잘 되었으니 Go 프로그래밍을 위한 준비는 되었다고 친절하게 알려준다. 친절하네!!

간단하게 코드를 작성하고 F5 를 누르면 실행이 된다. 오... 

IDE 가 아니라, CMD 명령 프롬프트에서 실행을 해보자. 아래 링크를 가보면, CMD 에서 실행 명령어를 확인할 수 있다. 

https://golang.org/cmd/go/

go run 파일명 명령어를 실행하면 된다. 

CMD 는 좀 구리다고 생각하다면, 다른 툴에서 실행해보자. 아래 링크를 참고하자. 

https://developers.google.com/web/shows/ttt/series-2/windows-commandline

필자는 PowerShell 에서 떄려봤다. CMD 보다는 조금 낫지만 땡기지는 않는다. 



리눅스 환경에서 SDK 설치


Cent OS 7 환경에서 Go 언어를 설치해보자. 참고로 2019년 2월9일 현재, 릴리즈 최신 버전은 1.11.5 이다. 아래와 같이 설치 바이너리 파일을 wget 하자. 


wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz


받은 파일을 압축을 풀자. 


 sudo tar -C /usr/local -xvzf go1.11.5.linux-amd64.tar.gz


그리고, 다음 과정은.. 에이 모르겄다. 귀찮다. 시간도 없고...

그냥 yum 으로 설치하겠다. 


yum install golang golang-godoc golang-vet golang-src golang-pkg-linux-amd64 -y


yum 으로 설치하면, 따로 변수 설정을 할 필요가 없다. 간단하다. 실서버 환경에서는 yum 으로 하지는 않고 보통 바이너리 파일로 설치해서 따로 셋팅을 할 것이다. (서버 담당자가...)

main.go 라는 파일을 만들자. 그리고, 간단하게 헬로우 월드 구문을 작성하고, 윈도우 환경에서 했던 것처럼 똑같이 go run main.go 를 실행하면 아래와 같이 출력된다. 끝! 심플하다. 




간단한 HTTP 웹서버를 구현해보자. 


net/http 모듈을 사용하겠다. 자세한 내용은 이 글에서는 없다. 

https://golang.org/pkg/net/http/

간단하게 아래와 같이 샘플 코드를 작성하고

F5 를 실행해보자. 그리고, 크롬 브라우저에서 localhost:8088/hello 를 실행하면 아래와 같이 딱 나온다.

그렇다면, 리눅스 환경에서도 실행해볼까? go 파일을 작성한 다음에 go run 을 실행해보자. 

netstat -tnlp 로 확인해보면 8088 포트가 바인딩 되는 것을 확인할 수 있다. 그리고 curl 로 간단하게 Reqeust 를 날려보자. 그러면 아래와 같이 결과 값이 출력된다. 


마무리


Go Programming 언어를 간단하게 실행하였다. Go 언어가 다른 언어와 어떤 차이,장단점이 있는지는 아직은 잘 모르겠다. 필자가 최근에, 여러개의 Task를 병렬로 실행하는 애플리케이션을 고민 중인데, Go 언어가 병렬성을 잘 지원한다는 얘기를 듣고 공부를 시작하였다. 하지만, 업무에서 바로 사용하기에는 무리가 있을 듯 하다. 팀원 중에 Go 를 공부한 팀원이 한명도 없을 듯 하다. 상반기에 틈틈히 공부해보고... 여유가 된다면 업무에도 도입하는 것을 제안을 해볼까 생각중이다. 다음 글은 아마도 MongoDB 를 연동하는 샘플을 구현 해볼 것이다. 그럼 이만 마치겠다. 

작가의 이전글 링크드 데이터(Linked Data) 기본개념
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari