SlideShare a Scribd company logo
프리랜서 1 년간 겪은 Go
- 프리랜서는 은총알의 꿈을 꾸는가 ?
- 장점 위주 Go 소개
소개
조석규

외주 전문 1 인기업 쑤왓 (https://ssuwat.com)

블로그 https://ezaurum.com

JAVA/Spring 으로 쇼핑몰 / 팜 게임 / 소셜카지노 서버

C# 으로 MMORPG/ 보드게임 서버

Unity3D/Flash 로 소셜카지노 /MMORPG/ 보드게임 클라

현재 Go/Vue
횡설수설 ( 橫說竪說 )
어원 - 종횡무진 ( 縱橫無盡 ) 으로 왔다갔다하면서도 이치에
조금도 어긋나지 않는 , 조리가 정연한 말
현재 - 조리 없게 말하는 모습
정반합 - 일단 종횡무진으로 왔다갔다 하면서 조리가 없을 수도
있을수도 있음 , 이야기 중심으로 코드는 없이
은총알을 찾아서
No Silver Bullet
– Essence and Accident in Software Engineering, Fred Brooks
하지만 ...
은총알이라는 건 뭘까
이 이야기를 하기 위해서는 제가 LA…
당연히 성능은 기본
컴파일이 빠르다
결과물을 빨리 볼 수 있다 .
테스트를 더 빨리 돌릴 수 있다 .
흐름이 끊기지 않는다 .
Time is GOLD! MONEY!
https://www.xkcd.com/303/
테스트 / 문서화가 쉽다
퇴근하고 불안감이 덜하다 .
리팩토링 할 때 부담감이 덜하다 .
“ ”
코드를 유지 할 수 있다 .
타이핑이 적다
손은 소모품이고 , 교환이 안 된다 .
타이핑이 적으면 코드가 간결해 보인다 .
작업시간이 줄어든다 .
배포가 쉽다
철야 후 새벽 5 시 30 분에 배포하다가 실수하고 세상을 향해
울분을 터트리지 않아도 된다 .
라이브러리가 많다
바퀴를 다시 만들 필요는 없다 .
쓰는 사람이 많다 .
사람 구하기도 쉽다 .
폼이 난다
중요한 일을 하고 있다는 느낌적인 느낌 .
잘 하고 있다는 느낌 .
자기 고양감 , 자존감 , 소속감 등을 느낄 만한 이미지 .
후보는 ?
C/C++
Java
Python
Javascript
LISP(Ruby, Scala)
C#
PHP
Java - 탈락
장점
자료 많다
사람 많다
익숙하다
Spring - 니가 뭘 좋아할지 몰라서 다 넣어봤어
단점
Map 선언이 귀찮다
Spring 이 너무 크고 느리다
타이핑이 많다
C/C++ - 탈락
장점
빠르다
세밀한 제어가 가능
사람 많다
자료 많다
단점
–
어렵다 마지막으로 제대로 코딩한 게 한 세기 전이다
컴파일이 느리다 (Unreal)
타이핑이 많다
PHP - 탈락
장점
쉽다
사람 많다
단점
느리다
익숙하지 않다
죄악의 상징 - 대학 때 망친 프로젝트가 많다
Javascript - 탈락
장점
자료 많다
핫하다
단점
–
너무 어렵다 this/gulp/webpack ...
jQuery 로 고생한 기억이 난다
LISP - 탈락
장점
어쩐지 폼 난다 - 해커와 화가를 읽고
단점
이걸로 뭘 어째야 하는 건지 모르겠다
괄호 치기 힘들다
Python - 한없이 은총알에 가까운 ... 하지만 탈락
장점
라이브러리 많다
코드가 간결하다
철학이 맘에 든다
작업 시간대비 결과물이 좋았다
단점
배포가 귀찮다
왜 2.7 이 있는거지 ?
C# - 탈락
장점
익숙하다
속도 빠르다
Java 에 설탕을 쳤다
event/async/await 로 비동기 프로그래밍이 쉽다
Unity3d 에서도 사용
단점
서버가 윈도
그렇다면 ...
New Hope
타이핑 vs 파이썬
비슷한 정도
→
코드가 깔끔해지고 비슷해짐 남의코드도 쉽게 읽을 수 있음
코드 분석 및 재활용이 쉬움
→
세미콜론이 없다 JS 코드 짤 때도
case 에서 break 도 없어짐
if 에서 괄호도 없어짐
목 객체 생성이 아주 쉬움 - JSON 과 비슷한 선언 형태
스펙 번역 -
https://github.com/golangkorea/golang-spec
비동기 vs c#
C# 보다 쉽다
채널은 동기화 스트레스를 없애 준다
이벤트 드리븐도 채널도 간단히
성능은 충분
기본 제공 vs 라이브러리 형태
성능 vs c/c++
충분히 빠르다
PHP 로 된 레거시 웹 서버
→ →
뻗음 대용량 서버로 교체
→ CPU 사용율 80% 이상
→ Go →
로 전환 1% 대
→ 고객 감동
→ 이후 전체 시스템 Go 전환 결정
물론 PHP 쪽 코드가 엉망인 탓이 컸음
배포 / 컴파일 vs Java
컴파일 빠르다 - 테스트 하면서 흐름 끊기지 않음
파일 하나로 만들어진다
추가 라이브러리 , 플랫폼 설치할 필요 없음
테스트하면서 통화중인 고객이 서버 재배포를 인지 못함
알트탭 보다 빠르다
패키지 관리는 go mod 실행으로 끝 (dep ensure)
서버와 버전이 안 맞는 문제 - Docker 에서 컴파일
폼 vs LISP
옛날 GW-BASIC 을 처음 배울 때의 흥분감
전체를 컨트롤 한다는 전능감
단점 ( 이라고 생각했던 것 )
1. 순환참조 안됨 - 구조를 잘 생각하게 됨
상호 참조가 있으면 서로 분리할 필요가 없다
2. 제네릭 없음 - 이상하게 쓸 일이 없다
하지만 Go 로 프로젝트를 하고자 하면 갑님은 ...
1.자바로 해 주세요
2.그게 뭐죠 ?
3.알아서 해주세요
자바로 해주세요
유지보수 인력 수급 문제
→ 여러분 주변에 Go 홍보 많이 해주세요
그게 뭐죠 ?
좋은 겁니다
영세 회사의 경우 서버비 절감에 반응
→ 여러분 주변에 Go 홍보 많이 해주세요
알아서 해주세요
설득에 가장 효과가 있었던 것은
논리적으로 자세혀 설명해도 안 / 못 듣는다
→ 열정적으로 자신감 있게 큰소리 땅땅
→ 구글을 강조
→ 신기술이 아니고 성숙한 기술이라고 강조 (2009 년 발표 )
→ 10 년된 기술 ( 반올림해서 )
→ 배울 게 적어서 금방 쓸 수 있다 ( 처음엔 )
사용하는 기자재
IDE – IntelliJ (GoLand)
–
웹 프레임워크 echo 기반 , 자잘한 건 자체 구현
DB – gorm(test - sqlite, stage - docker)
프론트 - Vue
배포 - scp
Q&A
감사합니다

More Related Content

What's hot

스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
Eunhyang Kim
 
디자이너의 코드 읽기_0.들어가기
디자이너의 코드 읽기_0.들어가기디자이너의 코드 읽기_0.들어가기
디자이너의 코드 읽기_0.들어가기Sun Kim
 
최광훈 포트폴리오
최광훈 포트폴리오최광훈 포트폴리오
최광훈 포트폴리오
Kwanghoon Choi
 
Studying english
Studying englishStudying english
Studying englishtedypicker
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
Kwangsung Ha
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
DaeMyung Kang
 
[Pl in c++] 11. chapter
[Pl in c++] 11. chapter[Pl in c++] 11. chapter
[Pl in c++] 11. chapterMinGeun Park
 
Django 2
Django 2Django 2
Django 2
Kim HyeockJin
 
대마고에서 살아남기
대마고에서 살아남기대마고에서 살아남기
대마고에서 살아남기
KyleSeongwooJun
 
파이콘 한국 2015 디자인 후기
파이콘 한국 2015 디자인 후기파이콘 한국 2015 디자인 후기
파이콘 한국 2015 디자인 후기
Hyun-woo Park
 
[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기
Eunhyang Kim
 
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
smartstudy_official
 
패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션
Taegon Kim
 
How to study
How to studyHow to study
How to study
DaeMyung Kang
 
개발하긴 싫지만 코딩은 하고싶어
개발하긴 싫지만 코딩은 하고싶어개발하긴 싫지만 코딩은 하고싶어
개발하긴 싫지만 코딩은 하고싶어
Eunhyang Kim
 
정글에서 살아남기 - 아마존 개발자
정글에서 살아남기 - 아마존 개발자정글에서 살아남기 - 아마존 개발자
정글에서 살아남기 - 아마존 개발자
Aree Oh
 
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
CONNECT FOUNDATION
 
[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기
한재 제
 
밥플래닛
밥플래닛밥플래닛
밥플래닛
JooHyung Park
 

What's hot (20)

스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
 
디자이너의 코드 읽기_0.들어가기
디자이너의 코드 읽기_0.들어가기디자이너의 코드 읽기_0.들어가기
디자이너의 코드 읽기_0.들어가기
 
최광훈 포트폴리오
최광훈 포트폴리오최광훈 포트폴리오
최광훈 포트폴리오
 
Studying english
Studying englishStudying english
Studying english
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
Technicalinterview
TechnicalinterviewTechnicalinterview
Technicalinterview
 
[Pl in c++] 11. chapter
[Pl in c++] 11. chapter[Pl in c++] 11. chapter
[Pl in c++] 11. chapter
 
Django 2
Django 2Django 2
Django 2
 
대마고에서 살아남기
대마고에서 살아남기대마고에서 살아남기
대마고에서 살아남기
 
파이콘 한국 2015 디자인 후기
파이콘 한국 2015 디자인 후기파이콘 한국 2015 디자인 후기
파이콘 한국 2015 디자인 후기
 
[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기[프로그라피 정기 세션] Github으로 협업하기
[프로그라피 정기 세션] Github으로 협업하기
 
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
 
패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션
 
How to study
How to studyHow to study
How to study
 
개발하긴 싫지만 코딩은 하고싶어
개발하긴 싫지만 코딩은 하고싶어개발하긴 싫지만 코딩은 하고싶어
개발하긴 싫지만 코딩은 하고싶어
 
정글에서 살아남기 - 아마존 개발자
정글에서 살아남기 - 아마존 개발자정글에서 살아남기 - 아마존 개발자
정글에서 살아남기 - 아마존 개발자
 
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
 
[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기
 
밥플래닛
밥플래닛밥플래닛
밥플래닛
 

Similar to 프리랜서 1년간 겪은 Go

131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
React principle
React principleReact principle
React principle
jongho jeong
 
『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기
복연 이
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
Jinsoo Jung
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료
Joon Hee Lee
 
AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료
AWSKRUG - AWS한국사용자모임
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
Sewon Ann
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
Myeongin Woo
 
웹 본격적으로 배우기 전 감 잡기 - 1
웹 본격적으로 배우기 전 감 잡기 - 1웹 본격적으로 배우기 전 감 잡기 - 1
웹 본격적으로 배우기 전 감 잡기 - 1
mangonamu
 
staccato 강연 20190612 - 미림여고_마한빈
staccato 강연 20190612 - 미림여고_마한빈staccato 강연 20190612 - 미림여고_마한빈
staccato 강연 20190612 - 미림여고_마한빈
staccato
 
Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료
seungdols
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Yongho Ha
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
Jaehoon Choi
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
Seomgi Han
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
월간 IT 슬라이드
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
NAVER D2
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Suwon Chae
 

Similar to 프리랜서 1년간 겪은 Go (20)

131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
React principle
React principleReact principle
React principle
 
『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료
 
AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료AUSG Dot 팀 소개 발표 자료
AUSG Dot 팀 소개 발표 자료
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
 
웹 본격적으로 배우기 전 감 잡기 - 1
웹 본격적으로 배우기 전 감 잡기 - 1웹 본격적으로 배우기 전 감 잡기 - 1
웹 본격적으로 배우기 전 감 잡기 - 1
 
staccato 강연 20190612 - 미림여고_마한빈
staccato 강연 20190612 - 미림여고_마한빈staccato 강연 20190612 - 미림여고_마한빈
staccato 강연 20190612 - 미림여고_마한빈
 
Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 

프리랜서 1년간 겪은 Go

  • 1. 프리랜서 1 년간 겪은 Go - 프리랜서는 은총알의 꿈을 꾸는가 ? - 장점 위주 Go 소개
  • 2. 소개 조석규  외주 전문 1 인기업 쑤왓 (https://ssuwat.com)  블로그 https://ezaurum.com  JAVA/Spring 으로 쇼핑몰 / 팜 게임 / 소셜카지노 서버  C# 으로 MMORPG/ 보드게임 서버  Unity3D/Flash 로 소셜카지노 /MMORPG/ 보드게임 클라  현재 Go/Vue
  • 3. 횡설수설 ( 橫說竪說 ) 어원 - 종횡무진 ( 縱橫無盡 ) 으로 왔다갔다하면서도 이치에 조금도 어긋나지 않는 , 조리가 정연한 말 현재 - 조리 없게 말하는 모습 정반합 - 일단 종횡무진으로 왔다갔다 하면서 조리가 없을 수도 있을수도 있음 , 이야기 중심으로 코드는 없이
  • 4. 은총알을 찾아서 No Silver Bullet – Essence and Accident in Software Engineering, Fred Brooks
  • 6. 은총알이라는 건 뭘까 이 이야기를 하기 위해서는 제가 LA… 당연히 성능은 기본
  • 7. 컴파일이 빠르다 결과물을 빨리 볼 수 있다 . 테스트를 더 빨리 돌릴 수 있다 . 흐름이 끊기지 않는다 . Time is GOLD! MONEY! https://www.xkcd.com/303/
  • 8. 테스트 / 문서화가 쉽다 퇴근하고 불안감이 덜하다 . 리팩토링 할 때 부담감이 덜하다 . “ ” 코드를 유지 할 수 있다 .
  • 9. 타이핑이 적다 손은 소모품이고 , 교환이 안 된다 . 타이핑이 적으면 코드가 간결해 보인다 . 작업시간이 줄어든다 .
  • 10. 배포가 쉽다 철야 후 새벽 5 시 30 분에 배포하다가 실수하고 세상을 향해 울분을 터트리지 않아도 된다 .
  • 11. 라이브러리가 많다 바퀴를 다시 만들 필요는 없다 . 쓰는 사람이 많다 . 사람 구하기도 쉽다 .
  • 12. 폼이 난다 중요한 일을 하고 있다는 느낌적인 느낌 . 잘 하고 있다는 느낌 . 자기 고양감 , 자존감 , 소속감 등을 느낄 만한 이미지 .
  • 14. Java - 탈락 장점 자료 많다 사람 많다 익숙하다 Spring - 니가 뭘 좋아할지 몰라서 다 넣어봤어 단점 Map 선언이 귀찮다 Spring 이 너무 크고 느리다 타이핑이 많다
  • 15. C/C++ - 탈락 장점 빠르다 세밀한 제어가 가능 사람 많다 자료 많다 단점 – 어렵다 마지막으로 제대로 코딩한 게 한 세기 전이다 컴파일이 느리다 (Unreal) 타이핑이 많다
  • 16. PHP - 탈락 장점 쉽다 사람 많다 단점 느리다 익숙하지 않다 죄악의 상징 - 대학 때 망친 프로젝트가 많다
  • 17. Javascript - 탈락 장점 자료 많다 핫하다 단점 – 너무 어렵다 this/gulp/webpack ... jQuery 로 고생한 기억이 난다
  • 18. LISP - 탈락 장점 어쩐지 폼 난다 - 해커와 화가를 읽고 단점 이걸로 뭘 어째야 하는 건지 모르겠다 괄호 치기 힘들다
  • 19. Python - 한없이 은총알에 가까운 ... 하지만 탈락 장점 라이브러리 많다 코드가 간결하다 철학이 맘에 든다 작업 시간대비 결과물이 좋았다 단점 배포가 귀찮다 왜 2.7 이 있는거지 ?
  • 20. C# - 탈락 장점 익숙하다 속도 빠르다 Java 에 설탕을 쳤다 event/async/await 로 비동기 프로그래밍이 쉽다 Unity3d 에서도 사용 단점 서버가 윈도
  • 23. 타이핑 vs 파이썬 비슷한 정도 → 코드가 깔끔해지고 비슷해짐 남의코드도 쉽게 읽을 수 있음 코드 분석 및 재활용이 쉬움 → 세미콜론이 없다 JS 코드 짤 때도 case 에서 break 도 없어짐 if 에서 괄호도 없어짐 목 객체 생성이 아주 쉬움 - JSON 과 비슷한 선언 형태 스펙 번역 - https://github.com/golangkorea/golang-spec
  • 24. 비동기 vs c# C# 보다 쉽다 채널은 동기화 스트레스를 없애 준다 이벤트 드리븐도 채널도 간단히 성능은 충분 기본 제공 vs 라이브러리 형태
  • 25. 성능 vs c/c++ 충분히 빠르다 PHP 로 된 레거시 웹 서버 → → 뻗음 대용량 서버로 교체 → CPU 사용율 80% 이상 → Go → 로 전환 1% 대 → 고객 감동 → 이후 전체 시스템 Go 전환 결정 물론 PHP 쪽 코드가 엉망인 탓이 컸음
  • 26. 배포 / 컴파일 vs Java 컴파일 빠르다 - 테스트 하면서 흐름 끊기지 않음 파일 하나로 만들어진다 추가 라이브러리 , 플랫폼 설치할 필요 없음 테스트하면서 통화중인 고객이 서버 재배포를 인지 못함 알트탭 보다 빠르다 패키지 관리는 go mod 실행으로 끝 (dep ensure) 서버와 버전이 안 맞는 문제 - Docker 에서 컴파일
  • 27. 폼 vs LISP 옛날 GW-BASIC 을 처음 배울 때의 흥분감 전체를 컨트롤 한다는 전능감
  • 28. 단점 ( 이라고 생각했던 것 ) 1. 순환참조 안됨 - 구조를 잘 생각하게 됨 상호 참조가 있으면 서로 분리할 필요가 없다 2. 제네릭 없음 - 이상하게 쓸 일이 없다
  • 29. 하지만 Go 로 프로젝트를 하고자 하면 갑님은 ... 1.자바로 해 주세요 2.그게 뭐죠 ? 3.알아서 해주세요
  • 30. 자바로 해주세요 유지보수 인력 수급 문제 → 여러분 주변에 Go 홍보 많이 해주세요
  • 31. 그게 뭐죠 ? 좋은 겁니다 영세 회사의 경우 서버비 절감에 반응 → 여러분 주변에 Go 홍보 많이 해주세요
  • 33. 설득에 가장 효과가 있었던 것은 논리적으로 자세혀 설명해도 안 / 못 듣는다 → 열정적으로 자신감 있게 큰소리 땅땅 → 구글을 강조 → 신기술이 아니고 성숙한 기술이라고 강조 (2009 년 발표 ) → 10 년된 기술 ( 반올림해서 ) → 배울 게 적어서 금방 쓸 수 있다 ( 처음엔 )
  • 34. 사용하는 기자재 IDE – IntelliJ (GoLand) – 웹 프레임워크 echo 기반 , 자잘한 건 자체 구현 DB – gorm(test - sqlite, stage - docker) 프론트 - Vue 배포 - scp