이 강의는 첫날 첫번째 강의였는데 사진보다는 열심히 메모했던것 같다.

Go언어 공부를 시작하려는 사람들이나 서버개발을 시작하려는 사람들에게 도움될만한 강연이었다.


Go언어구글이 개발한 프로그래밍 언어로 고성능 네트워크 프로그래밍에 사용하기 좋다.

Go언어는 C언어에서 진화된 형태로 C++과는 다르다. 비슷하다면 phyton과 비슷.

Go언어에는 Go루틴이라는 것이 있으며 stateless에는 사용하기 좋지만, stateful에서는 한계가 있다.

(stateless - 무상태 프로토콜, stateful - 상태 프로토콜

이 블로그에 잘 정리되어있더라 → http://ssaturn.tistory.com/190)


Go언어의 장점

메모리 자동관리

네트워크 프로그래밍

병렬 프로그래밍


그렇지만 VM(Virtual Machine)은 아니다!

스레드를 막 만들어도 괜찮다. (고루틴)

채널고루틴간의 통신통로를 말한다.


Go를 사용하는 이유

클라이언트 접속마다 고루틴을 만들어도 10k문제는 걱정없음


C++은 IOCP, epoll 써야하지만 (자세히는 이해를 못했다. 강제 멀티스레드 프로그래밍 방식을 고수해야 한다는듯)

→ Go는 BSD Socket 쓰듯이 사용하면 된다.


크로스플랫폼 개발이 쉽다. (ex : 윈도우 + 리눅스 동시개발)

IDE를 지원한다.

IDE에는 VSCode와 유료인 GoLand가 있는데 GoLand가 더 좋은것 같다고 하심.


클래스는 없음.

struct는 있지만 C에 가깝다.


금방 배운다 → 즉 배울 것이 적다 → 기능이 적다. (장점이자 단점)

const, generic, STL 같은 것이 없음.


비실시간통신(http)에서는 고루틴이 최고로 좋음.

실시간통신에서 고루틴은 네트워크 통신에서만 도움.


빠르긴하지만 C++보다는 느리다.


예외처리

defer, panic, recover


대규모 분산 게임서버의 경우 Front Server(클라이언트와 서버간 패킷전달)는 

stateless에 가까우므로 Go언어 사용하면 아주 좋다.




기타 강의자료

golangkorea github - https://github.com/golangkorea

발표자료 외 기타 - https://github.com/jacking75/conf_ndc_2018

NDC18_golang으로 네트워크 프로그래밍 하기.ppt

추천도서로는 가장 빨리 만나는 Go언어(길벗) - 네이버 책 링크

Posted by misty_
,