어찌됐든 그대여 가장 소중한 것을 이 세상에 선사하소사

전에 중국 인터넷 언론 Jiemian 이 Smartisan 사의 OpenSSL 기부를 보도한 글을 번역한 적 있다:

<보이지 않는 전우>

오늘에야 당시 이 글이 중국 테크 업계에 일으켰던 광범위한 논란과 치열했던 논쟁들을 다수 읽게 되었다. 그리고 OpenSSL 하트블리드 사태 당시 해외 커뮤니티와 언론사들에서 일었던 광범위한 논쟁들을 읽게 되었다.

중국내 논란이나 전세계적인 논란이나, 상상 가능한 모든 범위를 커버했던 것 같다. 보도자료의 디테일의 진실성부터 언론의 정신이며 OpenSSL 재단의 재무 상황이며 모금의 어려움이 확대보도됐는지 여부며 유사 프로젝트들과 비교했을 때 OpenSSL 의 영향력이 과대평과됐는지 여부며 OpenSSL 의 문제는 돈인가 관리인가 논쟁이며 OpenSSL 의 코드가 쓰레기인지 여부며 OpenSSL 이 어떻게 영향력 다른 말로 점유율을 얻은것인지며 대형 사이트들 다른말로 큰회사들이 암호학 라이브러리를 선정하는 프로세스가 어떻게 되어있는가며 OpenSSL 이 취약점을 발표한 프로세스며 오픈소스 생태계 대토론이며 소프트웨어경제학과 보안의 관계며 심지어 다양한 버전의 음모론들까지…

결론적으로 리써치한 내용이 훨씬 늘어났고, 견식도 많이 늘었음에도 나는 이 글을 번역했던 것이 (다른 말로 이런 내용의 전파에 크진 않지만 힘을 보탰던 것이) 후회스럽지 않다.

끝내며,

사건 당사자, Smartisan 창업주이자 CEO 인 나영호씨가 대응글에서 인용한, 테레사 수녀가 콜카타 고아원에 써준 시를 재인용한다.

그대가 친절하면
사람들은 그대가 이기적이고 속셈이 음흉하다고 말할 수 있다
어찌됐든
그대여 친절하소사

그대가 성실하고 솔직하다면
사람들은 그대에게 사기치고 등골 빼먹을 수도 있다
어찌됐든
그대여 성실하고 솔직하소사

그대가 다년간 심혈을 쏟아 건설한 물건이
사람들에게 하루밤사이에 파멸당할지도 모른다
어찌됐든
그대여 건설하소사

그대가 오늘 한 선행이
내일이면 사람들에게 잊혀질지도 모른다
어찌됐든
그대여 선행을 하소사

그대가 가장 소중한 것을 이 세상에 바쳤을지언정
그것이 그대로 하여금 감사의 마음을 받게 하기에는 역부족일지도 모른다
어찌됐든
그대여 가장 소중한 것을 이 세상에 선사하소사

사람들은 왕왕 도리를 따지지 않고 비논리적이고 자기중심적이니라
어찌됐든
그대여 그들을 용서하소사

(끝)

프로그래밍의 특급 비밀

coolspeed

This book has a lot of knowledge in it, but it is mainly about expertise. It is going to try to teach you the things about Unix development that Unix experts know, but aren’t aware that they know.
– Eric S. Raymond, “The Art Of UNIX Programming”

벤처캐피탈 업계에는 이런 역학이 존재합니다: 최고로 잘한 투자는 수익이 나머지 모든 투자 수익의 합보다 많다. 나머지중 최고로 잘한 투자는 나머지 모든 투자 수익의 합보다 많다.

프로그래밍에도 비슷한 역학이 존재합니다.
프로그램은 90%의 실행시간을 10%의 코드 실행에 소모합니다.[1]

이것을 통해 우리는 놀라운 추론을 해낼 수 있습니다.
시스템을 성능이 낮지만 생산성이 좋은 언어로 짜고, 그중 10% 의 핫스팟만 찾아내 C++ 로 짜면 끝.

실제로 (일부) 천재 프로그래머들은 시스템을 어떻게 설계했을까요?

1. YouTube

검색창은 Go 프로그램. 웹 애플리케이션 서버는 느린 Python 으로 짰습니다.

2. GitHub

“GitHub” 의 “Hub” 은 느린 Ruby on Rails 이고, “Git” 은 C.

3. Instagram

사진 저장은 Amazon S3 (네이티브 코드 예상). 웹 프런트는 C코드 (NginX). 데이터베이스는 C (PostgreSQL).
웹 애플리케이션 서버는 Django (Python).

4. Uber

DB: C++(MySQL)
Index: C (Redis)
애플리케이션: Javascript

Continue reading

오픈소스 네트워크 라이브러리 일람

1. Century

coolspeed 가 만든 Go 언어 네트워크 라이브러리 입니다:
https://github.com/coolspeed/century

이것이 1등입니다. 그냥 말이 필요 없습니다 ( __ __)

2. Skynet

https://github.com/cloudwu/skynet/graphs/contributors

C 언어와 lua 로 된 네트워크 라이브러리.
중국 게임 업계 제일 유명한 스타 개발자인 cloudwu 가 개발한 네트워크 라이브러리 입니다.
아직도 활발하게 개발 중이네요. Pull Request 도 활발하나 봅니다.

천하의 netty 가 github 에서 별표 7000개인데, Skynet 이 무려 4000개.

3. Netty

Java 네트워크 라이브러리.
한국인이 개발하고 (게임 업계 포함하여) 전 세계 개발자들이 추앙하는 네트워크 라이브러리인데  정작 한국에서는 많이 안쓰이는?

https://github.com/netty/netty

4. SuperSocket

C# 네트워크 라이브러리.
중국인이 만들었는데 한국 게임 업계에 많이 쓰이는..

https://supersocket.codeplex.com

5. Boost.ASIO

C++ 슈퍼천재(괴짜)들이 만든거라 워낙 웰메이드. 사용도 쉽고.
언뜻만 보기에도 탑 솔루션인데, C++ 17 표준에 포함된다는게 거의 확정이라 (개인적으로 80%확률일거라 봄) 가장 핫하다고 볼 수 있지 않을까요.

Continue reading

600억 값어치 해킹으로 이더리움(Ethereum) 가격 폭락

비트코인 유사한 인터넷 가상 화페 이더리움(Ethereum)의 가격이 해킹 사건으로 폭락했다.

이더리움 단위당 가격은 최고기록 $21.5 달러로부터 불과 몇시간 내에 $15 달러까지 곤두박질 쳤다. 바로 $5천만 달러 값어치의 해킹 절도 사건 때문이었다. [1]

gettyimages-149818149.jpg

이더리움 개발자들은 이 해커가 절도한 가상화페의 사용을 방지하는 핫픽스(fork)를 제안하고 있는 중이다.

이더리움은 비트코인과 유사한 탈중앙화 화페이다. 비트코인과 다른 점이라면 그것의 블락체인 위에서 화페 외에도 탈중앙화 조직이란 기능과 Smart Contracts 기능을 제공할 수 있다는 점이다.

이상은 최대한 간단한 소개성 기사이고, 기술적으로 보다 정확이 말하자면 Ethereum 블락체인 (네트워크) 자체는 그 어떤 취약점도 발견되지 않았다.

취약점이 발견되어 이용당한 것은 이더리움 플랫폼 위의 애플리케이션(DApp, aka, Decentralized App) The DAO 이다. 본 블로그에서는 일전에 <크라우드펀딩의 새로운 역사> 란 제목으로 해당 프로젝트를 소개한 적이 있다.

hour_cryptocompare_index_eth_usd_168_11466160967350

The top graph shows the value of ether in US dollars, while the second shows the volume of transactions on the network over time. — CryptoCompare

Continue reading

요즘 쿨한 프로그램은 다 Go 로 짠다며? Ethereum & IPFS 소개

첫번째로 소개할 놈은 Ethereum 이다.

자 Bitcoin 얘기는 다 빼고..

Ethereum 프로젝트는 이더리움을 (발음은 사실 무음 자음 (청자음) 으로 /이시리움/ 에 가깝지만)

The World Computer 이라고 소개한다.

프로그래머 커뮤니티에 대한 소개글에 알맞는 소개는 아래와 같은 형태가 되겠다:

자 역시 HLLVM (High-Level Language Virtual Language) 얘기 역지 집어치우고 최대한 간단하게 소개하자면:

얘는 전 세계적으로 싱크되는 가상 머신이다. 바이트코드는 인스트럭션 수에 따라 돈을 내야 한다.

장점은 뭐냐? 말 그대로 월드 컴퓨터라는 점. (SUN 의 옛날 드립을 생각해보자: The Internet is a computer.)

단점은 뭐냐? 비싸다.

그럼 누가 이런 컴퓨터를 쓸 것인가? 아직 자세히는 아무도 모른다. 커뮤니티는 이 “월드 컴퓨터”의 장점이 전세계적 싱크인 ‘권위성’ 인 만큼, 소유권 등록 (이를테면 지적 소유권 등록) 등 지리적, 정치적 경계를 넘는 범세계적인 정보 등록에 사용될 포텐을 크게 보고 있다.

Continue reading

크라우드펀딩의 새로운 역사

역대 크라우드펀딩 최대 액수 랭킹이 요 위키피다아 페이지에 나와있다. 액수가 계속 변해서 글쓰는 시점의 스샷을 첨부한다:

crowdfund_projects

The DAO, 이틀전에야 처음으로 들어본 이름이다. 오래도록 crypto-currency 쪽 소식을 주시안하고 있는 동안 언제 이렇게 세상이 변했는지 모르겠다. 해당 위키피디아 페이지의 정확성을 의심중이다. 다들 아시다 싶이 위키피디아가 백프로 정확한건 아니라서.

여기에 기술된게 사실이라면, 크라우드펀딩 역사상 모집자금 규모 1위와 6위가 모두 Ethereum 관련이다. 이더륨 프로젝트는 Bitcoin 네트워크를 통해 이루었고 이 무슨 듣보잡 TheDAO 는 이더륨 네트워크에서 이루었다고 한다.

이 소식의 자극 때문인지 한동안 주춤하던 이더륨 시총이 빌리언 달러에 도달했다:

ethereum_capacity

출처: coinmarketcap.com

자 그러면 DAO 란 무엇인가?

Continue reading

싱글스레드 모델이 액터 모델(Actor-Model)보다 나은 X가지 이유

1. 액션(동작) 순서 컨트롤이 된다. 액션의 페이스를 컨트롤할 수 있다. 예를 들어 30fps 로 모든 몹의 x좌표 더하기 1. 액터 모델에서는 비동기라서 그 액션이 어느 프레임에 들어갈찌 모른다.

2. 디버깅이 쉽다.
2.1 액터 모델에서는 글로벌 상태에 브레이크 포인트를 찍은 후에 매개인의 메일박스를 검사해야 하는 번거로움이..
서버의 경우 클라와 달리 브포보다 로그가 더 유용할 경우가 많다. 예를 들어서 Joe Armstrong 과 Richard Stallman 등 분들이 모두 printf 디버깅 방식을 더 선호한다는 소문이… 하지만 서버가 클라만큼 상태가 복잡할 경우, 브포(==시간정지) 를 통한 글로벌 상태 파악이 극히 중요해질 때가 있다.
2.2 그리고 액터 모델은 비결정론적이라서 어떤 버그들이 어떤때는 재현되고 어떤 때는 재현되지 않을 수 있다. (그러고보니 2.2 항목은 LMAX 의 장점만 말하면 다 나오네.)

3. 반경 10메터안 모든 몹들에게 범위공격. 액터모델의 경우 남의 좌표를 알 수 없어서 일일이 물어야 한다. “님 좌표 얼마임?” (그렇지 않으면 좌표를 좌표테이블에 등록해야 하는데, 그러면 액터모델이 아니게 됨) (IO 오버헤드, 코딩 코스트)

4. 로드밸런싱따위 필요없다. 액터모델의 경우 (스케쥴러에 따라 다르지만) (어차피 스케쥴러 연구하는 사람은 없으니) 액터 로드밸런싱이 필요한 경우가 있다(Skynet 역사 참조). 반면 싱글스레드 모델에서 프로그래머는 신이고, 로드밸런싱따위 필요없다.

5. 트랜잭션?

6. 클라도 싱글스레드 모델이잖아.

7. CPU 성능에 좋다 (동일언어) (사실 이건 가장 중요하지 않은 원인이다) (늘여쓰면 글한편감이라 자세한 내용은 생략한다).

결론: 두 모델이 서로 다른 문제 도메인 (Problem Domain) 에 적합할 것 같다는거다:

  • 액터모델은 격리성, 분산성과 faul-tolerance 가 골(goal)에서 제일 중요한 경우 또는 message-passing 자체가 문제를 잘 모델링할 경우 (IM, Instant Messenger: e.g. Facebook Messenger, Whatsapp, etc.)
  • 싱글스레드 모델은 글로벌 상태 컨트롤이 중요한 경우. 예를 들어 게임. (시뮬레이팅 문제?)

적재적소(適材適所).

길게 쓰면 아무도 안읽으니 이번에도 후딱 끝내는 미덕을 발양하겠다.

(끝)