Go의 객체지향
최수녕 / 이노그리드
Index
Go를 이해해보자!
Go를 이해해보자!
내가 알고있는 다른 언어와의 비교 - Go의 객체지향
언어의 탄생 배경 이해 - Go가 클라우드 네이티브 세계에서 유명한 이유
Go의 객체지향
객체 / 생성자
객체 / 생성자
캡슐화
인터페이스
저것의 이름이 콘센트인지 돼지코인지는 중요하지 않다.
내가 정의한 동작을 실행할 수 있다면 콘센트로 간주한다
“코드를 꽂을 수 있다!”
인터페이스
인터페이스
인터페이스
…이하 코드 생략
상속 (composition)
has -a 관계
is -a 관계
상속 (composition)
상속 (composition)
Go가 클라우드 네이티브 세계에서 유명한 이유
Go가 클라우드 네이티브 세계에서 유명한 이유
Go가 클라우드 네이티브 세계에서 유명한 이유
클라우드 위에서 애플리케이션을 돌리는 목적
→ 요청량에 따라 안정적으로 운영하기 위해 빠르게 서버의 갯수를 줄이거나 늘리는것이 중요
→ 비용 감소 중요
⇒ 최대한 빠르고 가벼운 언어 선택 필수
클라우드 네이티브란?
1950년대 | 모든 프로그램과 데이터는 거대한 단일 장비에 저장 |
1980년대 | 저렴한 PC의 등장으로 프레젠테이션/비즈니스로직/데이터 계층으로 나뉨 |
1990년대 | 많은 양의 컴퓨팅 자원을 소모하는 애플리케이션으로 인해 개발/관리/배포의 어려움으로 마이크로서비스 시대 개막 |
2000년대 | 아마존이 AWS를 출시하면서 클라우드컴퓨팅 대중화 |
Go를 만들게된 계기
지금 존재하는 언어들로는 구글처럼 분산되고 확장가능하고 탄력성있는 서비스를 표현하는데 적합하지가 않아요!
높은 설계 유연성
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
이해하기 쉬운 언어
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
편리하고 가벼운 동시성 사용(goroutine, channel)
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
빠른 빌드 속도
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
언어의 안정성
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
가비지 콜렉터
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
성능
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
| C++ | Go | Java | Node.js | Python3 | Ruby | Rust |
Fannkuck-Redux | 8.08 | 8.28 | 11 | 11.89 | 367.49 | 1255.5 | 7.28 |
FASTA | 0.78 | 1.2 | 1.2 | 2.02 | 39.1 | 31.29 | 0.74 |
K-Nucleotide | 1.95 | 8.29 | 5 | 15.48 | 46.37 | 72.19 | 2.76 |
Mandlebrot | 0.84 | 3.75 | 4.11 | 4.03 | 172.58 | 259.25 | 0.93 |
N-Body | 4.09 | 6.38 | 6.75 | 8.36 | 586.17 | 253.5 | 3.31 |
Spectral norm | 0.72 | 1.43 | 4.09 | 1.84 | 118.4 | 113.92 | 0.71 |
정적 링크
클라우드 네이티브 세계를 위한 기능 (Go의 장점)
Go의 단점
Thank you
추후 더 나은 세션을 위해, 피드백을 부탁드려요!
Q & A
추후 더 나은 세션을 위해, 피드백을 부탁드려요!