postgame

얼마전 게임쪽에서 또 go로 짜겠다는 분을 만나봄.
go를 좀 살펴본다면, 문법이 좀 괴랄한데..

가령 타입 위치
var a = []int{1,2,3,4,5}
(타입을 뒤에 둔다? 추론 문법은 또 따로 있음.)

함수선언은 이렇다.
func test(a int) int{
return a
}
(리턴값도 뒤에 둔다? 
또 {는 꼭 함수랑 같은 줄에 있어야함)

파이썬처럼 2개 이상 리턴할 수 있고, js처럼 클로져도 있고, c++처럼 포인터도 있는데, 포인터 연산은 안됨. 여러 언어에서 비슷한데 조금씩 다 다르다.

아마 go 설계자는 척봐도 
이건 go로 짠거다! 라고 알수 있게 만들려고 한 것 같다.

go의 가장 큰 특징이라면 고루틴인데, 
이게 뭐냐면 OS에 요청해서 만들어지는 쓰레드가 아닌 
가짜 쓰레드다. 그래서 가볍고, 부담없이 쓸수 있다곤 하는데...

보통 멀티 쓰레드 프로그래밍은 디버깅 하기가 무척 어렵다.
뭐, 잘만 쓴다면야 다 좋은거지만....

게임업계에 node.js가 한차례 휩쓸고 갔다가 
요샌 좀 시들해졌는데, 
또 유행에 따라 go를 쓰겠다고 한다면, 이것 또한 위험한 결정이 되지 않을까 싶네...


'개발잡설' 카테고리의 다른 글

golang에 대한 잡설  (0) 2018.07.06
2018 6 30  (0) 2018.06.30
2018. 5. 31  (0) 2018.06.30
2018 4 19  (0) 2018.06.30
Posted by 중원_

2018 6 30

개발잡설 2018.06.30 13:22


웹서버 개발자들은 채팅서버를 어떻게 짤까?
일단 라인 개발 블로그에 공개된 모양은 이렇다.

웹소켓 + 웹서버(아마도 스프링)기반 Akka + 레디스 클러스터

웹서버에 함부로 락을 걸 수 없으니 비동기 처리를 위해 
akka를 사용하였고,
(akka는 액터 모델을 구현한 라이브러리. 근데 이걸 뭐라고 읽지? 
아까?)

상태도 없으니, 상태처리를 몽땅 레디스 클러스터에 부담시켰다.
즉 레디스 클러스터가 브로커 역할을 담당

게임쪽에선 보통 최대한 각 액터에 부담시키고, 브로커는 가볍게 가는데, 요건 완전히 반대... 응?

웹쪽에선 성능이나 레이턴시 보다는 
범용성과 스케일 아웃이 훨씬 중요하게 봐야하는 것 같다.

웹서버와 소켓서버 개발자 차이가 화성과 금성 차처럼 많다는걸 느껴지는군


https://engineering.linecorp.com/ko/blog/detail/85

'개발잡설' 카테고리의 다른 글

golang에 대한 잡설  (0) 2018.07.06
2018 6 30  (0) 2018.06.30
2018. 5. 31  (0) 2018.06.30
2018 4 19  (0) 2018.06.30
Posted by 중원_

2018. 5. 31

개발잡설 2018.06.30 13:21

많은 c++ 서버 개발자들이 자바를 어려워하는데..
정확히는 자바 자체보단 스프링 때문인 경우가 많다.

스프링은 자바 웹 개발에서 주로 쓰는 거대한 웹프레임워크로, 
스프링의 특징인 aop나 di는 리플렉션이 없는 c++에선 똑같이 구현하기가 어렵다.

특히 싱글턴 인스턴스를 xml로 설정해서 구현하는건 c++개발자 입장에선 그야말로 충격과 공포..
(실제 사용은 그리 어렵진 않음)

요새 스프링은 자바 소스만으로 구현할 수 있지만, 스택오버플로우에선 모든게 짬뽕으로 나온다.

딱 정답만 찍어주는 msdn만 보다 구글링 잡탕을 보다보면, 
경력이 많은 c++개발자일수록 
자바를 꺼려하는걸 넘어 
자바 혐오론자로 발전하는 경우도 있다카더라.
(거꾸로 보면 msdn은 정말 대단한거임)

구글과 오라클의 소송전으로
자바 위기론이 솔솔 나오는데...

자바가 앞으로 망할지 흥할지는 잘 모르겠지만, 
현재 웹백앤드 개발은 자바 세상이니 
한동안은 여전히 그대로 쓰이게 될듯..?


'개발잡설' 카테고리의 다른 글

golang에 대한 잡설  (0) 2018.07.06
2018 6 30  (0) 2018.06.30
2018. 5. 31  (0) 2018.06.30
2018 4 19  (0) 2018.06.30
Posted by 중원_