Why

만약 당신이 독학 엔지니어나 부트캠프 졸업생이라면 컴퓨터 과학을 배우는 것도 놓쳐서는 안됩니다

세상에는 두 부류의 소프트웨어 엔지니어가 있습니다. 첫 번째 부류는 컴퓨터 과학을 깊이 이해하고 도전적이고 혁신적인 일을 수행하는 엔지니어들입니다. 이들은 시간이 지나면서 중요한 상업 프로젝트나 오픈소스 프로젝트에서 성취감을 느끼고, 기술적 리더십을 쌓으며, 더 높은 보수를 받습니다.

두 번째 부류는 특정 툴이나 기술에만 집중하며, 기초를 깊이 이해하지 못한 채 표면적으로만 기술을 익힙니다. 시간이 지나면서 이들에 대한 고용 기회는 감소하고, 중요한 일에서 배제될 가능성이 큽니다. 고용 안정을 원하거나 첫 번째 부류의 엔지니어가 되고 싶다면, 컴퓨터 과학을 깊이 배우는 것이 중요합니다.

Teach Yourself CS 내용 발췌

그런데 이 말이 진짜일까? 

위 책내용에 대해서 본격적으로 들어가기 전에 간단히 Typescript 에서 소개해주는 내용도 봤습니다 (이것도 스터디로 진행)

  • 프로그래밍 언어
  • 새로운 타입스크립트 고유 구문이 포함 됨
  • 타입 검사기
  • 파일에서 생성된 변수 함수를 이해하고 잘못된 부분을 알려 주는 프로그램
  • 컴파일러
  • 자바스크립트 코드를 생성 해주는 프로그램
  • 언어 서비스VS code 와 같은 편집기에 유용한 유틸리티 제공법을 알려주는 프로그램

3개의 프로그램과 타입스크립트 고유 구문으로 이루어져 있습니다

https://www.huy.rocks/everyday/04-01-2022-typescript-how-the-compiler-compiles

타입스크립트 컴파일러가 동작하는 방식, 즉 tsc 명령어를 눌렀을 때 일어나는 작업은 크게 아래와 같이 나눠볼 수 있습니다

  1. tsconfig 읽기: 타입스크립트 프로젝트라면, root에 tsconifg.json을 읽는 작업부터 시작할 것이다.
  2. preprocess: 파일의 root 부터 시작해서 imports로 연결된 가능한 모든 파일을 찾는다.
  3. tokenize & parse: .ts로 작성된 파일을 신택스 트리로 변경한다.
  4. binder: 3번에서 변경한 신택스 트리를 기준으로, 해당 트리에 있는 symbol (const 등) 을 identifier로 변경한다.
  5. 타입체크: binder와 신택스 트리를 기준으로 타입을 체크한다.
  6. transform: 신택스트리를 1번에서 읽었던 옵션에 맞게 변경한다.
  7. emit: 신택스 트리를 .js .d.ts파일 등으로 변경한다.
  • 3번까지의 과정이 소스코드를 읽어 데이터로 만드는 과정
  • 4, 5가 타입체킹 과정
  • 6, 7 을 파일을 만드는 과정

조금 더 디테일한 내용을 알려고 하면 자세하게 정리한 내용을 참고해 봐도 좋습니다 

 

tsc 명령어로 ts 파일을 js 파일로 바꿉니다

얘기하고 싶은 부분은 jdk 를 설치하면 javac로 .java 파일을 해석하듯 typescript를 설치하면 tsc 로 .ts 파일을 해석할 수 있었습니다

다른 컴파일러를 구현한다면? 아래와 비슷하겠네요

loadModuleFromFile(.. , .. , .. , .. )

 

 

밑 바닥부터 만드는 컴퓨팅 시스템의 목차는 아래와 같습니다. 

1.불 논리
2.불 연산(중요)
3.순차 논리
4.기계어
5.컴퓨터 아키텍처

6.어셈블러(기초 적인 번역)
7.가상머신 1: 스택산술 (중간급 번역기)
8.가상머신 2: 프로그램 제어
9.고수준 언어
10.컴파일러 1: 구문분석 (아주 복잡한 번역기)
11.컴파일러 2: 코드생성
12.운영체제 (해당 항목은 따로 깊게)
이걸 어떻게 이해할 수 있을까?

저는 Chip 그림의 명세만 보고는 도저히 내부를 상상할 수가 없었습니다 (어떠한 가설조차 불가능) 그래서 관련 내용을 설명해주는 영상을 보고 역으로 답지를 먼저 보고 문제를 마지막에 보았습니다 

그리고 그림을 직접 손으로 따라 그려봤습니다

영상 1

영상 2

직접 한번 그려 보쟈!

아주 간단히 얘기하면 아래를 하기 위해서 

X + Y = ?

Bit 반전이 되는 6개의 Input 값이 있고 1개의 중요한 Output 값과 2개의 부가적인 OutPut 값이 나오게 되는 것 (책 속의 ALU 에서는.. 이게 표준? )

ALU 내부 방식에 대한 설계는 어떻게 가능할 수 있는가? 이걸로 스터디 원들과 메신저로 얘기도 해봤습니다 (너무 막연하더군요)

여기까지가 HW 이야기 입니다

저만의 결론은 단지 사칙연산이라기보다는 그렇다고 논리회로라기 보다는 그저 겉 핧기식 판단이라도 해보자면 입력과 출력이었습니다

뭔가 아직 이야기(코드)의 흐름은 연결이 되지 않았지만 철저하게 기계화된 약속과 그 약속을 가지고 Chip 이라는 것이 만들어졌습니다 

Chip 은 단순하지만 Chip 을 활용하면 메모리나 CPU 를 조합할 수 있습니다 객체지향적 컨셉이라기보다는 천재의 영역같은 조합이 이루어지면 저희는 이걸 컴퓨터 아키텍처라고 부른다는 생각이 드는군요 

 

  • i 와 sum 두 개의 변수와 loop, end 두개의 label 
  • 번역된 코드는 주소 0부터 시작하는 메모리에 저장하고 변수들은 1024부터 할당
  • 다음으로 소스코드에 새로운 기호가 나타날 때마다 테이블에 추가하는 방식으로 기호테이블에 추가하는 방식
  • 다 만들어지면 이 테이블을 이용하게 됩니다

기계어 프로그램은 명령어를 코드화 한 것

2진 코드는 연상기호를 사용하게 되어 있어서 1010 0001 0001 0001(16bit) 으로 된 코드는

1010 → ADD

0010 → R2

0001 → R1

0001 → R3 

이 기호를 좀 더 추상화하면 2진 명령어 대신에 기호를 텍스트로 입력해서 프로그램을 작성가능 이런 기호 표기법을 어셈블리 언어, 어셈블러라고 합니다 

스터디원의 Question? 왜 VM 이라는 중간자를 거쳐서 해석(컴파일)같은 과정을 거쳐야 할까?

여기서 중요한 기반은 스택산술머신을 구현하는 것

명세

산술 명령: 스택에서 산술 및 논리 연산을 수행함

메모리 접근 명령: 스택과 가상 메모리 세그먼트 사이에 데이터를 주고 받는 명령

프로그램 흐름 명령: 조건 및 무조건 분기 연산을 가능하게 함

함수 호출 명령: 함수를 호출하고 결과를 반환 함

명세에 따라 아래와 같은 어셈블러 코드를 이해하는 부분을 구현할 수 있습니다 

명세에 따라 스택에 연산을 어떻게 할지 분기 작성을 구현할 수 있습니다

메인함수에서는 스택과 서브루틴을 사용해서 넣고 빼고 하면서 흐름을 진행합니다 

이것이 가능한 이유는 스택기반 산술머신이 구현이 되어 있기 때문입니다 즉, 메모리에 넣고 뺴고 하면서 논리를 해석할 수 있는 구조를 만들었습니다 

왜 이런 세부사항을 다 살펴봐야 하는지 의아해하는 사람들에게

이 책에서 가장 좋았던 부분

더 나은 고수준 프로그래머가 될 수 있는 희망을 준 책

만약 복잡하고 어려운 문제를 만난다면(워딩을 재해석)

  • 재귀(반복적인 부분 → 아키텍처로 누구나 따라할 수 있는 공식화가 가능할 수 있는 부분)

피호출자를 위한 인수, 함수프레임, 지역변수, 작업스택으로 구성된 메모리 블록을 스택에 추가

  • 모듈을 분리하고 관심사로 나누어 복잡도를 단순화 한다

효율성을 고려해서 재귀코드를 순차 코드로 다시 표현하려 한다

  • 정규화/반정규화 혹은 성능이나 비즈니스 요구사항을 고려해서 최적의 기능과 성능을 도출

고수준 프로그래머가 가당키나 한 말인가…

100번 1000번 다시 태어나도 그렇게 될 확률이나 자신이 없음… ㅎㅎㅎ… ㅜㅠㅡㅠㅜ

그렇다면 보편적으로 고수준(좋은) 프로그래머는 어떤 역량을 갖춘걸까?

단지 실력이라는 부분으로 모든 것을 치환하기는 힘들것으로 생각됩니다

ALU나 어셈블러, VM번역기 그리고 컴파일러 또는 운영체제 마저도 복잡하고 어려운 내부 시스템을 갖추고 있는 것으로 보입니다

그럼에도 불구하고 매우 높은 안정성과 성능을 보여주고 있는데

공통적으로 모듈이 되어 있고 관심사 별로 처리 방법이 잘 포장되어 있는 것으로 보입니다

그러면 이런 규칙들을 잘 설계하고 명세하는 것이 일단 시작이지 않을까?

즉 모든 구현에 대한 인터페이스 설계가 정말 중요한 것이지 않을까?

틈틈히 비즈니스에서 기술을 사용하는 부분에 대해서 인터페이스에 대해 문서화를 해보고 있습니다

과거에는 팀장이나 선임이 만든 인터페이스 문서로만 봤던 부분을 직접 작성해보니 작은 부분도 고민이되고 어려운 부분이 많은 것 같습니다 

특히 혼자 정하기 어려운 부분도 많고 꾸준히 생각해봐야 하는 부분들도 있습니다 하지만 기능은 추가되어야 하고 코드는 늘어나야 하며 일정은 준수해야 합니다 그리고 생산성이 뛰어나서 시간이 더 생겨서 문서를 쓸 수 있는 것이 아니라 어느정도 본인 희생적인 부분도 필요해 보입니다

즉, 내부구조를 설계하고 왜 이렇게 해야 하는지 공감이되고 품질과 성능과 그리고 생산성 좋은 인터페이스도 고려해야 합니다

절대적으로 시간에 쫓기면 더 많은 상상을 하기가 어려운 것 같습니다

시간에 쫓기더라도 시간을 고민하기 전에 단 한번이라도 한번 더 좋은 방법에 대해 More Thinking 을 항상 해보는 것은 어떨지..

독학 엔지니어라는 워딩이 있는지 몰랐는데 ㅎㅎ 어느정도 지식이 쌓이기 전까지는 계속 수많은 상상과 가설로 문제에 접근한 적도 많았습니다. 이처럼 Thinking 은 비용이 아니라고 생각되는 부분이라서 꾸준히 공부하고 검증해야 한다고 생각되네요

이번 스터디를 통해서 그동안 너무나 막연했던 컴퓨터 세상에 대해 조금 접근해 볼 수 있었고 무엇보다 아무런 준비나 부담없이 그냥 모여서 자유롭게 토론하고 얘기하고 상상하고 그런 부분이 좋았던 것 같습니다

아무말로 막 시작하지면 그래도 항상 결론은 책과 비슷하게 도출했던 부분이 가장 좋은 기억으로 남습니다

스터디를 정리하면서 과거에 제가 까막눈일때 코드를 알기 위해 모든 디버깅 포인트를 찍고 무작정 시작부터 한땀한땀 따라갔던 기억이 납니다

똑똑한 컴파일러의 도움이 없었다면 아마 저는 지금 여기에 없을지도 모르겠네요

마지막으로 코틀린으로 컴퓨터언어(책에서는 핵언어)를 해석하는 파서 부터 구현을 해보려고 도전했던 부분으로 마무리합니다

컴퓨터는 항상 어려우니 언제나 more thinking 을 하다보면 좀 더 고수준 개발자에 가까워지지 않을까 미래를 예측해 봅니다  

 

'My Reading > IT' 카테고리의 다른 글

2019 NDC 후기  (0) 2019.06.22
블록체인이란? (사내세미나)  (0) 2018.02.17

읽은 책


  1. 프로그래밍 언어의 이해 - [김일민, 김성동] "홍릉과학출판사" 

  2. 인터넷 이해와 활용 - [안치현, 김형철] "한빛미디어" 

  3. OS가 보이는 그림책 - [ANK Co., Ltd / 이영란] "성안당" 

  4. 비전공자를 위한 이해할 수 있는 IT 지식 - [최원영] "티더블유아이지"

  5. 좋은 코딩 나쁜 코딩 - [박진수] "한빛미디어"

  6. 프로그래밍 수련법 - [브라이언 W 커니핸, 롭 파이크 / 김정민, 장혜식, 신성국] "인사이트"

  7. 좋은 코드를 작성하는 기술 - [아가타 토시타카 / 정인식] "제이펍" (추천)

  8. Head First SQL - [린 베일리 / 박종걸] "한빛미디어" (추천)

  9. 인프라 엔지니어의 교과서 - [사노 유타카 / 김성재] "길벗" (추천)

  10. C# 코딩의 기술 기본편 - [가와마타 아키라 / 김완섭] "길벗"

  11. 뇌를 자극하는 C# 4.0 프로그래밍 - [박상현] "한빛미디어"

  12. 점프 투 파이썬 - [박응용] "이지스퍼블리싱" 

  13. 그림으로 배우는 알고리즘 - [스기우라 켄 / 서재원] "영진닷컴" (추천)

  14. 그림으로 배우는 HTTP Network Basic - [우에노 센 / 이병억] "영진닷컴" (추천)

  15. 하루 3분 네트워크 교실 - [아미노 에이지 / 김현주] "영진닷컴"

  16. 얇지만 얇지 않은 TCP/IP 소켓프로그래밍 C - [마이클 도나후, 케네스 칼버트 / 유재필] "Bj퍼블릭"

  17. Effective C# - [빌 와그너 / 김명신] "한빛미디어"

  18. More Effective C# - [빌 와그너 / 김완섭] "한빛미디어"

  19. 개발자가 되고 싶으세요? - [이상민] "로드북"

  20. 프로그래머가 몰랐던 멀티코어 CPU 이야기 - [김민장] "한빛미디어" (추천)

'My Reading > Book' 카테고리의 다른 글

2021 내가 읽은 + 읽을 개발서적 정리  (0) 2021.01.23
과거 책 뽑은거  (0) 2017.12.24

읽는 중


  1. 팀 개발을 위한 Git GitHub 시작하기 - [정호영, 진유림] "한빛미디어" 
  2. 모던 자바 인 액션 - [라울-게이브리얼 우르마, 마리오 푸스코, 앨런 마이크로프트 / 우정은] "한빛미디어"
  3. 자바 ORM 표준 JPA 프로그래밍 - [김영한] "에이콘" 
  4. Concurrency in Go - [캐서린 콕스 부데이 / 이상식] "에이콘"

보유 중


  1. 자바 개발자와 시스템 운영자를 위한 트러블 슈팅 이야기 
  2. 자바 개발자도 쉽고 즐겁게 배우는 테스팅 이야기 
  3. 그림으로 공부하는 IT 인프라 구조 
  4. 쉽게 읽는 하드웨어 & 소프트웨어의 원리와 구조 
  5. 웹을 지탱하는 기술 
  6. 코딩을 지탱하는 기술 
  7. 자바 기반의 마이크로 서비스 이해와 아키텍처 구축하기 
  8. 초급 개발자들을 위한 가볍고 넓은 스프링 부트 스타트 스프링 부트 
  9. Think Data Structures 자바로 배우는 핵심 자료구조와 알고리즘 
  10. 자바 객체지향의 원리와 이해

읽은 책


 

'My Reading > Book' 카테고리의 다른 글

~ 2020 내가 읽은 개발 서적 정리  (0) 2021.01.24
과거 책 뽑은거  (0) 2017.12.24

1. 개인정보의 처리 목적 (‘https://hankkuu.tistory.com/’이하 ‘Smilegate gamejam’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다.
- 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등


2. 개인정보의 처리 및 보유 기간

 (‘https://hankkuu.tistory.com/’이하 ‘Smilegate gamejam’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다.

② 구체적인 개인정보 처리 및 보유 기간은 다음과 같습니다.
☞ 아래 예시를 참고하여 개인정보 처리업무와 개인정보 처리업무에 대한 보유기간 및 관련 법령, 근거 등을 기재합니다.
(예시)- 고객 가입 및 관리 : 서비스 이용계약 또는 회원가입 해지시까지, 다만 채권․채무관계 잔존시에는 해당 채권․채무관계 정산시까지
- 전자상거래에서의 계약․청약철회, 대금결제, 재화 등 공급기록 : 5년 

3. 정보주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다.

① 정보주체는 Fire(‘https://hankkuu.tistory.com/’이하 ‘Smilegate gamejam) 에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
1. 개인정보 열람요구
2. 오류 등이 있을 경우 정정 요구
3. 삭제요구
4. 처리정지 요구



4. 처리하는 개인정보의 항목 작성 

 ('https://hankkuu.tistory.com/'이하 'Smilegate gamejam')은(는) 다음의 개인정보 항목을 처리하고 있습니다.

1<없음>
- 필수항목 : 없음
- 선택항목 :




5. 개인정보의 파기('Smilegate gamejam')은(는) 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.

-파기절차
이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.

-파기기한
이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.



6. 개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항

Fire 은 정보주체의 이용정보를 저장하고 수시로 불러오는 ‘쿠키’를 사용하지 않습니다.

7. 개인정보 보호책임자 작성


① Fire(‘https://hankkuu.tistory.com/’이하 ‘Smilegate gamejam) 은(는) 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.


▶ 개인정보 보호책임자 
성명 :강한규
직책 :작성자
직급 :작성자
연락처 :010-8774-5213, 9inemates@gmail.com, 
※ 개인정보 보호 담당부서로 연결됩니다.

▶ 개인정보 보호 담당부서
부서명 :강한규
담당자 :작성자
연락처 :010-8774-5213, 9inemates@gmail.com, 
② 정보주체께서는 Fire(‘https://hankkuu.tistory.com/’이하 ‘Smilegate gamejam) 의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. Fire(‘https://hankkuu.tistory.com/’이하 ‘Smilegate gamejam) 은(는) 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.



8. 개인정보 처리방침 변경

①이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.



9. 개인정보의 안전성 확보 조치 ('Smilegate gamejam')은(는) 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.

1. 내부관리계획의 수립 및 시행
개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.

2. 개인정보에 대한 접근 제한
개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있습니다.

3. 비인가자에 대한 출입 통제
개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.

확률 두 번째 이야기

이 세션에 관심을 가지게 된 것은 개인적인 판단이지만 실제 생활에서 가장 밀접하게 쓰이는 수학에서 파트가 확률과 통계라고 생각한다(두 번째는 방정식)

작년에 이어 두 번째 이야기 순서는

1.     확률의 편차를 줄여보자

2.     확률 보정의 효과

3.     세트 아이템에 대한 확률

확률의 편차는 평균과의 편차로 표준편차를 말한다 예시는 크리티컬 데이지가 발생하는 확률에 대해서 나왔는데 편차의 정도는 확률 분포의 곡선의 찌그러진 정도를 통해 알 수 있다

이것이 의미가 있는 이유는? 편차가 크게 되면 운이 좋고 나쁜 유저가 생기기 때문에 격차를 만들게 되어 유저 경험에 악영향을 미치거나 밸런스가 붕괴될 수가 있다는 부분이다. 확률의 묘미는 예상하지 못한 행운을 만들어 주는 부분으로 생각되었지만 너무 빈번하거나 너무 운이 나쁘게 될 경우 플레이 동기를 떨어뜨릴 수 있는 부분과 그것에 따라 유저의 경험을 디자인한다는 부분이 매우 흥미로웠다 확률에서 기대값이라 함은 고정된 평균값이지만 편차에 따라 유저의 흥미와 동기부여를 조절할 수 있다는 부분이 어느 정도로 조절 해야 하지? 와 같은 정답이 없는 요소로 보인다

편차를 만드는 부분은 2가지로 나타낸다면 성공횟수의 편차와 시도횟수의 편차로 나타낼 수 있다

성공횟수는 수치가 무한대로 갈수록 자연스럽게 유저간 편차가 줄어든다 즉 획득의 문제라 하면 시도횟수가 늘어날 경우 결국 아이템 획득에 대한 부분에서 모든 유저에게 동일한 경험을 줄 수 있다. 많이 하면 아이템을 획득한다는 관점은 확률은 그대로이지만 노력하는 사람에게 모두 동일한 경험을 줄 수 있다는 것이다

시도횟수의 편차는 상대적으로 랜덤한 확률이므로 유저간의 차이를 만든다 해당 부분에서 유저의 흥미를 만든 시스템이라면 리니지의 장비 인챈트 시스템을 둘 수 있을 것 같다 장비를 업그레이드 하기 위해 확률에 의존한 인챈트 시스템은 극악의 확률에도 성공한 유저에게 큰 만족감을 주었다 대신에 운이 없는 유저에게는 게임을 접게 만드는 요소이기도 했다. 어떤 부분이 더 좋다라고 판단하기는 어렵지만 적어도 많은 유저에게 행운의 경험을 디자인 시키려면 시도횟수의 편차를 줄이는 방법으로 접근할 수 있다. 아이템 획득의 관점에서는 드랍률을 높이고 그 성공으로 1개의 아이템을 얻는 것이 아니라 획득 아이템을 복수로 획득이 가능해진다면 많은 유저에게 아이템 획득의 경험을 줄 수 있다

결론은 이렇다 편차를 줄이려는 이유는 더 나은(재미있는) 경험을 디자인 하기 위함이고 성공횟수를 제어할 필요는 없다 많이 시도하면 결국 똑같아지기 때문이다 시도횟수를 제어하는 것은 성공의 경험을 더 많은 유저에게 제공할 수 있는 부분이다 이런 시도 횟수의 편차는 확률을 높이거나 여러 개를 획득하게 함으로 밸런스를 동등하게 만들 수 있다

확률 보정의 효과는 운 나쁜 유저가 이탈하는 걸 막기 위해 필요하다고 제시했다

유저가 확률 때문에 뒤쳐지는 것은 불쾌한 경험이므로 게임을 그만두는 것을 원하지 않고 만족감을 주기 위해 보정할 수 있다고 했다(발표자 또한 개인적인 견해라고 제시) 한편 공평함과 만족감이라는 관점에서 확률을 높이는 것은 성취감과 반비례할 수 있는 디자인이라고도 생각된다

적어도 확률/통계에 대해 고민하고 싶지 않은 대다수의 유저에게 기대감을 저하 시키는 경험을 주고 싶지 않은 선의로 생각된다. 실제 인생의 확률도 불행한데 게임까지 불행하다면 과연 좋은 경험이 될 수 있을까? 확률게임 특히 도박이나 강자와 약자가 나뉘는 세상에서 공정함이란 어떤 의미를 가지는지 의견이 불분명해 보인다. 다만 최근 추세에서 게임의 확률에 대해 공개하는(또 다시 리니지의 극악의 확률이 뉴스나 유투버들에게 이슈가 된 적이 있다) 국가적 정책에 대해 생각해 볼 만하다 (최근 제도적으로 게임 내 확률을 공개하도록 자율규제화 시킴)

확률을 높게 보정하는 것은 즐거운 경험을 더 많이 제공할 수 있지만 반대로 쾌감을 줄어들게 할 수 있는 부분이기에 매우 중요한 기획적 포인트로 생각된다 해당 부분에 대한 부분은 확률이 매우 낮아서 이탈자가 많이 생기거나 유료 아이템을 통해 획득비용이 높아졌을 때(해당 아이템 획득을 위해 매우 많은 돈을 써야 한다면) 보정을 통한 획득비용을 줄어들 게 할 수 있다

발표자의 성향이 좋은 확률은 혹은 재미있는 경험적 확률을 많은 사람에게 주고 싶은 경향으로 보인다 (설명에서 어쨌든 이라는 키워드가 들어갔는데 어쨌든 이라는 부분이 더 많은 좋은 경험으로 디자인 하는 부분을 염두에 둔 것 같다) 남들은 1번에 얻는데 나는 100번에 얻거나 남들은 천원에 얻는데 나는 백만 원에 얻는 다는 것은 확률로 인한 밸런스 붕괴를 막으려는 목적으로 보인다.

더 다양한 셋트 아이템에서는 셋트 아이템을 모두 모으기 위한 확률을 말한다

비교 수치는 동등한 확률로 각각의 아이템을 얻는 것이 아니라 아이템마다 드랍률을 바꾸어서 확률을 디자인하는 방법을 제시 했다 (획득 난이도는 유지하면서 완성 난이도를 조정하고 싶다면)

대신에 가장 낮은 확률에 영향을 받기 때문에 극악인 획득확률의 아이템 하나 때문에 완성을 힘들게 할 수 있다 (체감 난이도를 높이다 보니 어려운 세트를 만들게 된다)

발표자는 여기서 다시 문제점을 제시 했다 하나만 얻으면 된다는 기대감의 유저에게 나쁜 경험을 줄 수 있기 때문에 가장 낮은 확률의 아이템의 확률 조정으로 밸런스를 좋게 만들었다

여기까지가 대충 발표세션의 내용이다.

 

한창 게임을 했을 때, 어렸을 때 번들 게임CD를 구하기 위해 많을 때는 두 세 권의 게임잡지를 매달 구매할 정도로 다양한 게임을 해봤던 것 같다. 그 당시는 싱글 게임이다 보니 아무래도 극악의 확률이나 난이도를 가진 게임들이 유명했다 유저의 성취감을 극도로 높여주는 게임류가 유명했기 때문에 주로 이런 싱글 게임의 경우 환경설정에서 난이도 설정을 해서 가장 쉬운 모드부터 아무나 클리어 할 수 없는 식의 밸런스 디자인이 있었다 이런 싱글 게임에서는 그 게임을 하는 유저 당사자만 고려되었기 때문에 확률 자체를 어렵게 하는 부분은 시간적 시도적인 부분에서 많이 커버되었다(대수의 법칙이 적용됨) 많이 할수록 결국 성공하는 경험을 줄 수 있는 식의 디자인이 먹힌 것으로 보인다 (단 모든 사람이 게임을 분석해서 하거나 선천적으로 잘하는 것은 아님)

현대의 게임은 온라인을 배제하기 어렵다 온라인상에서는 유저마다 비교가 되기 때문에 어떻게 보면 작은 사회 세상을 투영한다 즉, 운이 좋고 나쁘거나 강자와 약자가 구분된다. 그 부분에서 밸런스를 소수에 맞출 것인지 다수에 맞출 것인지 선택이 필요해 보인다 발표자의 성향대로라면 다수에 맞추고 더 혜자(인터넷용어)스러운 게임을 위한다면 빈부의 격차나 행운의 격차를 조절하고자 하는 철학적인 관점이 보인다. 실제 사회를 예를 들어보자 확률적 공정함이란 기준이 절대적일 수 없어 보인다 다만 그런 시도를 위한 몇몇 제안이 있다. 백종원이 방송에서 말한 것을 말하자면 박리다매를 들 수 있다 값싼 가격에 좋은 경험을 많은 사람에게 제공하는 것이다. 게임세상으로 예를 들자면 유료아이템에 대한 가격을 파괴적으로 낮추는 것이다 주로 만원 단위의 아이템이 많은데 이걸 백원, 천원 단위로 파격적으로 낮추는 것이다 즉, 넥슨의 초딩 코 묻은 돈이라는 악명이 있었지만 그 경험들로 자라난 많은 성인들이 추억 할 수 있는 게임 경험으로 만들어 주었다. 또한 저가 정책은 현질 유도 게임이라는 프레임이 아니라 마케팅 수단으로 쓸 수 있다. 예를 들면 스카이피플이라는 쇼셜데이팅 앱은 4500? 아메리카노 한잔에 소개팅을 팝니다 라는 접근으로 기존 조건만남이나 성매매의 온상지라는 SNS소개팅 서비스 사이에서 유명해졌다. 여자는 외모 남자는 능력이라는 구조적인 부분은 동일하지만 서비스 비용을 아메리카노에 비유해 접근성을 높였고 몇몇 친구들은 실제로 이용하고 있다. BM이 전형적인 박리다매 형식으로 부정적인 소개팅앱에 새로운 컨셉을 불어 넣었다 물론 위의 사례는 게임과 직접적인 연관은 없다 다만 게임아이템을 다수에 공개해서 마켓에서 팔거라면 비싸게 팔아 소수의 점유물로 만드는 것이 아니라 커피 한잔 혹은 빅맥 하나 또는 제육덮밥 한 그릇, 라면 한사발 등등 비유할 수 있는 상품의 메타포는 현실세상에 많다.

확률에서 시작해서 유료아이템까지 나간 건 너무 멀리 갔나 생각이 드는데 발표자의 의도와 생각을 공감하고자 했다. 그의 문장은 확률로 인해 부정적인 사용자 경험을 보정하는 의도와 결과를 제시했다. 즉 어떻게 하면 많은 사람들이 즐거운 경험을 적절하게 만들어 줄 수 있을지에 대해 고민한 것으로 보인다. 너무 쉬워도 안되고 너무 어려워도 안되고 빈부의 격차에 의해 차이 나는 것 또한 반대한다. 싱글 플레이게임에서는 난이도를 어렵게 조절 가능하게 제공하는 방법으로 유저의 흥미와 재미를 극대화 하는 방법들이 사용되었다 그리고 불법복제는 많았지만 CD복제를 통한 경험공유를 통해 공감대를 만들 수 있게 해주었다 스타크래프트를 싱글플레이를 해봤다면 스타십 트루퍼즈를 보면서 해당 게임을 떠올리고 캐리건이 저그 종족이 된 부분에 대해 여러 사람의 입에 오르락내리락 할 수 있게 만들었다. 멀티 플레이 게임은 하나의 사회를 담아 낼 수 있다 몇몇 소수의 지존들을 만들어서 무림 무협의 세상을 만들 수도 있지만 많은 사람이 시간만 들이면 재미있는 경험을 공유하게 할 수 있는 식으로 개발할 수도 있는 것이다. 그런 관점에서 두 번째로 패자 회생도 고려해 볼 수 있다 레이드나 보스전에서 특정 아이템을 극악의 확률로 얻어야 하는데 사실 운 좋다면 누군가는 한번에 얻을 수 있다 다만 실패가 반복된다면 평생 그 아이템을 못 얻을 수도 있다 게임을 국가적인 시스템에 빗대자면 이런 패배자들을 구재할 수 도 있다. 실패횟수에 비례해서 획득확률을 높여 주는 것이다 그렇게 되면 많은 사람들이 성취 경험을 얻을 수 있다 확률 보정을 이런 식으로 조정해서 비슷비슷한 수준을 만들어 낼 순 있다. 물론 이런 이상적인 부분이 게임에 좋은 영향이 될 것이라고만 생각하기는 힘들다. 더 강함을 추구하는 세상에서 모두 다 잘할 수 있을까? 에 대한 의문은 열심히 노력하는 사람에게는 자수성가 대기만성형 게임보상을 줄 것인지는 그 게임 컨셉에 달려 있음으로 보인다 다만 어려움을 꾸준히 유지하다 나쁜 경험으로 게임 이탈자를 늘리기보다는 꾸준한 확률 보정으로 적절한 자수성가 형 성공자들을 양성시키는 모니터링을 하면서 확률의 중재자가 되는 게임이라면 해당 섹션 발표자가 이상적인 내용과 가깝지 않을 가 생각된다. 이상적인 답은 없겠지만 게임 확률을 알고 조정하는 것은 유저가 어떻게 하면 더 확률적 재미를 줄지 고민한다는 부분이므로 소수에 관심을 가질 지 다수에 관심을 가질 지 판단을 하고 제공하자. 표면적으로는 최대 다수의 최대 행복이 이루어지는 공리주의적 발상인 게임들이 사회 속에 스며들 수 있었으면 좋겠다. (WHO에서는 게임중독을 질병이라고 한다). 고민하다 보니 논설적이게 되었는데 수학인 확률이 실제 생활에 게임에 어떻게 영향이 될 수 있는지 생각해 볼 수 있는 흥미로운 주제였기에 기회가 된다면 수학과 관련된 세션은 찾아 들어봐야겠다


회사에서 블록체인이라는 주제로 세미나가 열렸다 참여인원이 약 100여명 이상으로 다른 계열사 직원들도 같이 참여하는 세미나이다. 

IT회사의 특성상 대부분 엔지니어가 많겠지만 기타 다른 직군에서도 자유롭게 들을 수 있는 세미나이다. 


정기적으로 기술이나 게임산업과 관련된 엔터테인터먼트 분야에서 전문가를 초빙해서 열리는 세미나로 작년에는 인기 유투버, 게임 시나리오 작가, 인문학?(통섭형 인재?), AR and VR?  라는 주제로 열렸던 것으로 기억한다. 기술적인 부분도 있고 비기술적인 부분도 있어서 관심있는 부분이라면 캐주얼하게 듣기 괜찮을 것 같다. 이번에는 4차 산업혁명이라는 것과도 연관있는 블록체인이라는 기술적인 세미나 였다 


- 블록체인 or 가상화폐 

요세 한창 많이 떠오르고 있는 용어이다. 많은 사람들이 저 두개의 차이를 알고 접하기는 쉽지 않을 것 같다. 

주위에도 재테크를 위해 가상화폐를 공부한다는 사람을 보았어도 불록체인을 공부한다는 사람은 보지 못했다. 

아직까지는 알려진 블록체인 서비스나 실제 화폐로서 거래되는 가상화폐의 가치를 느끼지 못했다. 그저 부동산, 환율, 주식, 다른 경제지표처럼 거품을 머금고 부피만 커져가고 있었다. 기타 경제지표들이 그렇듯 가상화폐라는 가치도 상승 변곡점과 하강 변곡점을 가지고 요동치고 그 사이에서 투기자본들이 시세차익을 보았으리라 보인다. 왜 경제라는 것을 지탱하는 여러 수단들이 스스로 거품을 품게 만드는지는 모르겠지만 심전도 검사처럼 올라갔다 내려갔다를 반복하며 그 거품안에서 신기하게도 재화가 생산된다. 

뭐 본질적인 목적은 투기성이 아닌 것으로 생각되지만 많은 도박게이머들의 구미를 당기게 한 것은 틀림없다.  


블록체인이라는 단어는 2016년 말 ~ 2017년도 초에 접해본 것 같다 그 당시 간편결제를 하는 핀테크 회사에 재직중이기도 했고 금융과 IT의 결합이라는 부분에서 몇몇 블로그들을 봤던 것 같다 그 때 본것을 찾으면 링크로 올려야겠다. 그 당시는 투기성 짙은 설명은 없던 것 같다 


(2016년도 12월기사.. 당시만해도 80만원 정도였다..) 

http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=101&oid=022&aid=0003128724&viewType=pc

그 이후 작년 5월에서 6월 쯤 이더리움이라는 것도 생기고 비트코인 가격이 집중적으로 상승곡선에 들어갔던 것 같다 아마 현재 저 당시에 구매했다면 폭락한 지금과 비교해도 엄청 이익이다. 언제나 그렇겠지만 돈은 없고 그저 분석만 할 듯....




어쨋든 중요한건 단순히 통계수치가 아니라 가상화폐의 기반이 되는 블록체인이 뭐길래 그 산출물인 가상화폐가 사람들의 이목을 끌었는지 확인해 볼 필요가 있지만 서론은 여기까지 한다 그래프만 보면 주식 그래프와 매우 닮아 보인다. 경제학적으로 더 알고자 하면 썰전의 유시민작가 편을 보는 것도 좋다. 


- 블록체인과 분산원장 

블록체인을 알기전에 한글로서 표현하는 말이 있다 분산원장이라는 말을 많이 한다. 분산된 거래장부라고 한다. 

원장이 거래내역이라면 그 거래내역을 분산되어 저장(DB?) 하는 기술로 보여진다. 

- 암호화폐가 거래(트랜잭션)를 하는 수단이라고 할 떄 그 거래가 승인되면 거래내역이 되고 그 승인된 거래내역(원장)이 분산되어 저장되기 때문에 거래정보가 한곳에 집중되지 않고 암호화된 화폐를 통해 거래를 하기 때문에 허가되지 않은 사람은 해당 거래를 훼손할 수 없다. 


좀 더 쉽게.... 

 1. 거래정보가 한곳에 집중되지 않는다는 것 

    - 상대방과 거래한 내역이 분산되어 저장되기 때문에 기존처럼 금융기관에 의존하지 않아도 정보가 유실되거나 다른사람 마음대로 변경할 수 없다. 

      만약 변경하려면 분산된 원장 모두를 수정해야 가능하게 된다.    

2. 암호화된 화폐를 통해 거래 

    - 암호화된 화폐정보라는게 보안기술의 핵심인 것 같다 복호화를 하는 대상이 확실하게 보증되어 해킹이 되더라도 그 거래를 열 수 있는 사람이 

     유일하게 정해져 있다면 신뢰할 수 있는 화폐거래를 할 수 있다. 


위의 내용 정도가 세미나 이전의 알고 있던 정도이다. 

용어를 정리해 보자면 

암호화폐(대상/who) - 거래에 대한 정보를 암호화된 정보로 저장한 대상 

트랜잭션(행위/What) - 암호화폐로 거래를 하는 것 

분산원장(방법/How) - 거래내역을 분산되어 저장하는 것 


어디서(Where) 는 블록체인 기반에서 라고 설명하면 되겠다.


암호화폐(대상)로 트랜잭션(행위)거래를 분산원장(방법)으로 완벽하고 신회할 수 있는 정보로 만들 수 있는 기술 

--> 한 문장으로 정리하자면 이렇다. 


----------------------------------------------------------------------------------------------------------------------------------------------스마일 게이트 세미나


- 금융기관에 대한 불신 

왜 가상화폐가 생겼는지에 대한 설명이 있었다 2007년? 미국발 금융위기였던 서브프라임 모기지 론 즉 은행돈 빌리고 채무자들이 폭락한 부동산 경제로 인해 파산하거나 빚을 못 값아 경제가 휘청거리고 엄청난 국고지원에도 불구하고 책임감을 느끼지 않는 월가의 모럴해저드를 비판해서 생겼다고 했다. 

(비트코인 창시자의 논문의 개요에 있는 내용이라고 해서 검색해 봤는데 딱 잡아서 금융위기라는 말은 없었다... 어쨌든 번역본은 첨부로 올린다. )

너무 자연스러워서 반발할 생각지 못했지만 따지고 보면 금융기관도 제 3자 중개인 입장인 것이다. 

중개인 입장을 독점하다 보니 금융기관이 없는 거래는 기록도 남기기 어렵고 지하경제라는 이름이 나올 정도로 화폐거래에 있어 절대적인 기관이 되었다. 

태초에 거래했을 때는 금융기관이라는 것이 없이 거래가 이루어졌을 것이고 지금처럼 온라인계좌에 기록되는 것이 아니라 현금거래가 대부분일 것이다. 

아마도 개발자는 2가지는 생각했을 것이다.  


중개인이 없어도 신뢰할 수 있는 1:1 개인간의 거래 

중개인이 없어도 정보를 분산시켜 외부의 훼손으로 부터 보호하는 거래

즉 기존 금융기관을 신뢰할 수 없다고 판단한 엔지니어가 금융기관의 개입이 없는 화폐의 교환 시스템을 만들어 버린 것이다. 

(은행을 없애버린다는 것인가...?)


- 중요한 공개키 암호화 기술 

따로 암호학에 대해 접해 본 적이 없어서 개념이 없다. 그저 암호화랑 복호화가 있다는 것과 해시 알고리즘을 통해 해석 불가능한 해시값을 만든다는 것 정도.. 어쨌든 블록체인의 암호화폐를 구성하는 가장 중요한 기술이라고 했다 대충 그림은 아래와 같다 

공개키와 개인키가 있다는 것 정도는 필수로 알아야 겠다. 

공개키 암호화 기술은 공개키와 개인키를 쌍으로 가지고 있는다 즉 개개인은 각자의 공개키와 개인키를 가지고 있는다. 

공개키는 모든 사람에게 공개하는 것이고 개인키는 자신만이 간직 하는 것이다. 

중요한 것은 공개키로 잠근 거래는 개인키로만 열 수 있고 개인키로 잠근 문서는 공개키로만 열 수 있다. 


 


대충 기억을 떠올려 만들었다 앨리스나 밥은 각자 2개의 키를 가진다. 

공개키 - 어느 누구에게나 공개되는 키

개인키 - 개인이 가지고 있는 키

위의 그림에서는 밥의 공개키로 잠근 내용은 밥의 개인키로 열 수 있고

앨리스의 개인키로 잠근 내용은 앨리스의 공개키로 열 수 있다.


중요한 것은 밥의 공개키로 암호화를 하면 밥의 개인키로 열 수 있다는것이고 

앨리스의 개인키로 암호화를 하면 앨리스의 공개키로 열 수 있다는 것이다. public / private 에 따라 역방향으로 열리게 했다 

(그림만 보면 거래할 때 개인키를 보내는 것 같아 개인키로 잠근 내용이라고 수정 함)

위 그림이 헷갈려서 다른 내용을 찾아 보았다 (위 그림만 보면 공개키 암호화화 디지털 서명이 동시에 되는 것이다) 

아래 링크에서 관련 내용을 보면 이해가 잘된다. 

https://organicmedialab.com/2014/02/20/bitcoin-addresses-transactions-and-wallets/

http://ulismoon.tistory.com/10

  


**P2P Netwwork 

내가 가장 관심가는 기술 부분이다. 

암호화폐에서는 위의 공개키 암호화가 더 중요한지 모르겠지만 저 부분은 이미 개발된 알고리즘이 있고 크게 변할 수 있는 내용이 없다. 

다만 서비스 제공자로서 인프라 역할을 할 수 있고 실제 블록체인의 체인을 형성하는 부분인 P2P Network에는 많은 관심이 있다. 

  


기존 C/S 구조에서 Server는 선형 구조라고 할 수 있고 P2P Network는 그래프 구조라 할 수 있겠다 

P2P의 장점으로는 가용성 확보가 있다. 어느 Node 하나가 끊기더라도 분산 원장에 의해 거래에 필요한 정보는 분산 저장되어 있으니 다른 Node를 통해 처리하면 되므로 Node로 인한 장애가 생기더라도 바로 복구가 가능하다는 것이다. 

기존의 C/S 구조에서는 Server에서 처리할 수 있는 용량이 한정되어 있기 때문에 부하를 줄이기 위해 Server를 늘리거나 서버 앞에 L4같은 네트워크 장비나 분산처리를 해주는 서버를 따로 설치해야 하지만 P2P Network자체가 분산된 Server와 Client 구조를 가진다 


그렇다면 의문점이 생긴다..

1. 그래프 구조가 복잡해질 수록 중첩된 Node간의 통신 시간이 오래 걸리는가? 

2. 각각의 Node는 Server이면서 Client 역할을 같이 하게 되면 각각의 개개인은 물리적 저장소를 제공해야 하는것인가?? 그렇다면 원장과 관련없는 

   Private 한 data까지도 노출될 위험이 있는 것인가? 

3. Node가 계속 증가되면 이중지불(P2P 네트워크 단점: http://simsimjae.tistory.com/188https://steemit.com/kr/@twinbraid/25pexx)문제를 해결하기 

  위해 어떤 승인된 Node에서 확인해야 하는가? 그렇다면 서비스를 지속할 수록 더 많은 Node에서 확인을 하고 거래가 더 오래 걸리는 것은 아닌가? 

4. P2P로 운영되면 admin 역할을 하게될 운영 주체가 아예 필요 없는가? 그렇다면 Node들의 상태를 확인하지 않는 다는 것인가? 

   기존 중앙집중형식은 모니터링이 가능했지만 P2P 상에서는 관리자의 역할을 어떻게 할 것인가? 

5. 금융기관의 개입 없이도 빠른 거래를 할 수 있는것처럼 표현하지만 실제로는 금융기관처럼 검증을 해주는 주체가 없기 때문에 더 오래 걸리는 것은 

   아닌가? 실제로 비트코인 거래 시간이 수십분에서 몇일이 걸린다는 기사를 본적이 있다. 

6. 분산 원장을 구성하게되는 각각의 Node의 database는 어떻게 생겼으며 어떤 data modeling과 schema를 가지고 있는가??

7. 토렌트 네트워크와 차이점은 무엇인가? (분산과 P2P에서 공통점이 있다) (https://steemkr.com/kr/@loum/p2p)


P2P Network에서는 의문점이 끝도 없이 생긴다.. 공개키와 암호화폐에 대한 내용은 핵심기술이긴 하지만 이미 끝난 요리 같다. 

반면에 Infra 역할을 하는 P2P Network는 요리할게 많아 보인다. 그리고 아직 실체화가 부족했던 이유는 Infra 기반이 아직 개발중이 때문이지 않을가? 

많은 IT 기업과 금융권들이 가상화폐를 만드는 것이 아니라 그 Infra(또는 플랫폼) 부터 만들 것이다. 

앞으로 서비스 기업들은 인프라를 만들고 그 인프라위에 가상화폐를 태우면 된다. 


- 공유 경제로서 가상화폐와 DAPP

공유 경제라는 말은 아마 4차 산업과 별개로 서비스 혁명과 같은 말일 것이다. 

1차산업이 농업 2차산업이 중화학 공업 3차산업이 서비스 산업이었던 것으로 중학교 때 배운 것 같다 금융권도 서비스 산업과 같다. 그리고 IT 기술과 더불어서 다양한 인터넷 서비스들이 생겼고 이제는 그 부피가 커져서 인터넷 망을 이용한 공유경제라는 것도 만들어졌다.  

P2P Network 이어서 인지는 모르겠지만 공유경제와 관련성을 지어서 블록체인의 성장성을 설명했다.  

DAPP(Decentralized Application) 이라는 탈중앙화 앱이라는게 생겨나고 있다고 한다. 블록체인 플랫폼을 이용하는 실체화된 서비스가 앱으로 생기고 있는 것이다. 

관련 내용을 더 찾아보긴 했지만 쉽게 생각해서 공통화된 화폐를 사용하기 위해 블록체인 기반의 가상화폐를 사용하는 앱이라고 생각하면 될 것 같다. 

아래 링크들도 읽어 보자 

http://amust.tistory.com/51

https://steemit.com/kr/@waystobecalm/dapp


- 블록체인이라는 단어를 한문장으로 설명 - 블록이 노드로 구성된 체인위에서 돌아다녀서 블록 체인 

두 번째 시간은 실무에서 글로벌 블록체인 프로젝트? 에서 참여하고 있는 젊은 분이 나왔다. 젊은 나이에 저 정도 경지에 올라 새로운 기술을 논할 수 있다는 부분이 매우 부러웠다. 

나처럼 말이 빠르거나 이 다음에 무슨말을 해야할지 머릿속에 수천가지 단어가 헤매지도 않고 여유와 천천히 말하는 점은 내가 배울 점이었다. 

첫 시간이 엔지니어가 아닌 사람에게도 설명할 수 있는 수준이었다면 이번 시간은 전문 용어와 실제 블록체인에서 블록이 어떻게 움직이는지 프로세스의 설명이 었다. 좀 어의없던 점은 자신들이 하고 있는 로직을 시퀀스 다이어그램으로 설명하는 부분은 놀랬다. 

관련 산업 종사자가 없고 관련 비즈니스로직을 모르는데... 입문 수준의 설명차원을 넘어가서인지 발표자도 이해시키려고 는 하지 않았다. 

어쨌든 이번에 확인한 사항은 Node와 Block이다. 

거래가 이루어 지는 것이 Block이고 하나의 원장이라면 이 Blocks이 Node에서 처리되는 과정이 거래를 확인하는 것이 비즈니스 로직이 되겠다. 


아래 3가지 용어가 핵심이 되겠으나 설명할 수 있는 수준이 아니어서 생략한다. 

- 합의 알고리즘

- Smart contract 

- BTP(blockchain transmission protocol)

간단히 얘기하면 합의 알고리즘은 거래의 신뢰성(이중지불 문제 같은)을 증명하기 위한 과정이고 

Smart Contract 는 합의 알고리즘을 전문화/자동화하기 위해 만든 프로그램이다. 

BTP는 블록체인에서 Block을 주고받는 Protocol 정도로 이해되었다.  

아래 링크도 읽어보면 좋다.  

http://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS6102653917

https://www.bloter.net/archives/299780

 

 


간단하게 그림으로 도식화 해보았다. 

마지막 강의를 들으면서 블록과 체인이 뭔지 생각하되 었다. 

Chain : 그래프 구조로 만들어진 Node의 집합 

Block : 거래정보(원장) 


하나 궁금한 점은 Node의 실체가 무었이냐이다. Node는 하나의 Person로 보기에는 합의 알고리즘이나 BTP를 받아 들일 수 있어야 한다. 그렇다면 단순히 개인으로만 치부하기에는 컴퓨터에서 많은 일을 해야 한다. 개인 용도의 PC가 전혀 private 하지 않다는 질문이 나온다. 

물론 따로 install을 거치지 않는 웹서비스 기반으로 동작하리라 생각한다 그렇다면 웹서버는 어떻게 구성이되고 웹 어플리케이션은 어떻게 설치할 것인가?? 짐작되는 부분이 있지만 말로만 설명들이니 실제 코드레벨의 구축과 구현이 의심적인 부분들이 있다. P2P Network는 꼭 나중에 공부하자


어쨌든 "블록이 노드로 구성된 체인위에서 돌아다녀서 블록체인이다." 라는 한 문장이 이번 세미나에서 얻은 점이다. 


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------


- 클라우드 서비스가 생각나는 이유 

공유경제라는 말이 나오기 전일 수 있다. 약 6년 전으로 보인다. 아직 학생이었을 때 IT 업계에 클라우드라는 말이 나타났다 

그때 당시는 관련된 내용을 찾아봐도 구름밖에 생각나지 않았던 것 같다. 그리고 지금에야 이해되는 것은 그저 거대한 웹서비스란 말이다. 

6년 전에도 웹서비스는 있었겠지만 지금처럼 특정 플랫폼 서비스를 이용한다는 느낌보다는 하나의 웹 어플리케이션 즉 독립적인 프로그램 하나를 사용한다는 그런 의미? 였던 것 같다. 

월 정액식 비즈니스 모델로 비용을 지불하는 웹 서비스도 그 이후에 많이 보인 것 같다. 

아무래도 SW만 하는 개발자 그룹입장에서 내부 Infra나 운영 관리에 편리해지면서 다양한 웹서비스 회사들이 생겨나게 된 것 같다.

사실 내부까지 보면 IaaS, PasS, SaaS 로 그 정도를 구분할 수 있지만 지금 하고 싶은 말은 어쨌든 새로운 금융 서비스라는 것이다. 

클라우드 서비스가 정착되면서 누구나 손쉽게 웹 서비스를 만들 수 있게 되었다. 

블록체인이 클라우드 환경만큼의 파급력이 생길 지 모르겠지만 완전히 없던 것이 만들어진것은 아니라 기존것을 대체하기 위해 나왔다는 것이다. 

새로운 것이 대세가 되는 것이 이제는 낯선 풍경은 아니다. 

다만 클라우드는 EMC나 Cisco나 HP와 같은 HW 업체들과 같이 발전해서 생긴 것이지만.. 기존 금융권에 대한 저항으로 새로운 서비스가 인정받을 수 있을지는 정확하지 않다.


- 돈의 가치에 대한 철학

발표자분도 94년생인 이더리움의 창시자를 보고 혁명가라고 말했다. 

비트코인의 창시자도 마찬가지겠지만 내가 이들한테 제일 놀랍고 궁금한 것은 돈의 단위를 어떻게 생각하고 만들었나? 이다. 

내가 만드는 암호화폐가 어떻게 1코인(ex: 원)이 되고 어떻게 1이라는 단위를 가지게 되었는지가 궁금했다. 1비트코인과 1이더리움은 어떻게 산정했지? 

채굴을 어느정도 하면 1코인을 가지게 되고 1코인의 가치는 어떻게 생각한거지? 이 기준을 세운것에 대해 별거 아닐지 모르겠지만 매우 놀랐다. 

얼마전에 1KG의 정의가 바뀐다는 말을 본적이 있다. 백금과 이리듐으로 만든 질량원기라는 것으로 1KG을 만든다고 한다. 

전세계의 모든 학자들이 모여서 모든 논리에 맞을 수 있는 단위를 산정하기 위해 고민했을 텐데 가상화폐의 가치는 도량형과는 차이가 있겠지만 어떻게 그 가치를 정의할 수 있었을까? 

기술과는 별개로 단위와 기준을 만들었다는 부분에서는 성공할지 실패할지는 모르겠지만 혁명가임은 분명하다.     

http://www.yonhapnews.co.kr/bulletin/2017/12/27/0200000000AKR20171227023400017.HTML?input=1195m

 

- 탈 금융권 탈 중앙화 가능? 

블록체인의 철학? 중 하나가 금융권과 같은 제3자에게 거래를 맞기지 않는 것이다. 

솔직히 현실상 불가능한 구조이지만 기술의 진보가 새로운 패러다임을 던질 수 있는 사건이다. 

다만 강의중에 의심적인 말이 있었다. 

기존에는 신뢰할 수 있는 거래에 대한 위임과 그에 대해서 비용을 지불했던 금융권의 서비스를 탈피함으로써 얻는 자유의 혜택으로 

금융서비스를 순수하게 개인대 개인 과거 고대시대 처럼 기관의 도움이 없이도 신뢰할 수 있고 믿을 수 있는 거래를 할 수 있다....  

라고 했던 부분은 솔직히 믿기 어려웠다. (마지막에 발표자도 문제를 제기한 부분)

역사적으로 대중이 똑똑해지면 자유를 얻거나 권력을 교체할 수 있었지만 또 다시 새로운 권력이 생기고 거기에 적응하면서 역사는 반복된 것으로 알고 있다. 

전체를 뺏긴 어렵겠지만 기존 금융권에서 이용하던 부분(예를 들면 공인인증서) 을 카카오 뱅크에서 블록체인 기반으로 제공하는 금융서비스를 통해 전 국민이 카톡으로 공인인증서 없이 은행업무를 보게 된다면 과연 완벽한 자유라고 할 수 있을까? 

이것은 단순히 하나의 기술이라기보다는 한 천재가 제시한 새로운 서비스 방식의 패러다임의 전환이지 않을까? 

암호화폐만 봤을때 관련된 기초 수학과 관련된 부분이나 이나 알고리즘에 대한 기술은 이미 끝이 났을 것이다.

어느 누가 Infra를 완성하고 자사의 플랫폼을 이용해 대중이 자연스럽게 거래를 할 수 있게 할까? 


아직 시장을 지배하는 주인이 없는 기술이라고 생각되는 점은 매우 SW스럽다는 것이다. 

클라우드 서비스가 막강한 HW의 진보와 해당 서비스를 이용할 SW 서비스의 양적 질적 발전이 동시에 나타났기 때문에 새로운 IT 공룡이 아니라 기존 IT 공룡들이 충분히 준비하면서 잠식이 가능했지만 블록체인은 아직 누가 승리자가 될 지 잘 모르겠다. 

아니면 오픈소스로서 누구나 이용할 수 있는 부분으로 Linux와 같이 완성된 기술로서만 남을지 새로운 서비스의 방향을 제시할 지는 아직 감이 잡히는게 없다. Windows(기존 금융권 + IT 공룡) vs Linux(다양한 자체 플랫폼 중요한건 오픈된 플랫폼) 의 예시가 맞을 지는 모르겠지만 블록체인 기반의 플랫폼 전환은 기존금융권을 탈피하려는 시장의 동의와 여러 이해관계자들의 시간과 비용을 필요로 한다고 생각하면서 매듭짓는다.

네트워크 

마스터링 TCP IP(입문편) (5판) 다케시타 다카후미 / 성안당 / 2012 

TCP IP와 라우팅 프로토콜(리눅스 기반의) / 윤종호 / 교학사 2010 

손에 잡히는 TCP IP 입문 / 백금란 / 대림 / 2010

TCP IP lllustrated volume. 1 TCP/IP 네트워크 프로토콜의 이해 (2판) / 케빈 폴 / 에이콘 출판 / 2013 

뇌를 자극하는 TCP IP 프로그래밍

TCP IP 윈도우 소켓 프로그래밍 (IT Cookbook 한빛 교재 시리즈) 

TCP/ IP 소켓프로그래밍 (리눅스 기반의) / 권혜윤

정석용의 TCP IP 소켓 프로그래밍 (열혈강의) / 정석용 / 프리렉


컴퓨터 언어 

이렇게 하면 나도 프로그램을 잘 만들 수 있다 (C & JAVA 프로그래밍 입문 3) 


운영체제 

리눅스 소켓 프로그래밍(예제로 배우는) / 웨런 W.게이 / 인포북 / 2004

고급 리눅스 API Vol.2 (리눅스 API의 모든 것 (에이콘 오픈소스 프로그래밍 시리즈 16) / 마이클 커리스크 / 에이콘 출판 / 2012


기타

IT Cookbook 인터넷 프로그래밍 입문 (Web) 

뇌를자극하는 ASP.NET 프로그래밍 

IT Cookbook c# 프로그래밍 입문

Head first HTML with CSS&XHTML



과거 인턴십 

습관 + 환경 이 중요 

내가 중요하다고 생각하는 가치들 (or 기반) 


인문학 

사람 - 사람 

사람 - 기술

기술 - 기술 

을 연결해 주는 것 

'My Reading > Book' 카테고리의 다른 글

~ 2020 내가 읽은 개발 서적 정리  (0) 2021.01.24
2021 내가 읽은 + 읽을 개발서적 정리  (0) 2021.01.23

+ Recent posts