💰컴투스 플랫폼 블록체인 특강
-
DevOps
- Docker/ Kubernates 학습 필수!
- 네트워크/클라우드에 대한 이해 필요…!
- 게임 개발이라고 해서 무조건 실시간 통신은 아니다.
- 언어를 선택할 때는 본인이 제일 편한 언어로 시작하는 것이 좋다
- 언어 ⇒ 프레임워크 ⇒ 서버 순으로 공부해 놓는 것이 좋다.
-
개발 언어 선택 기준
- 신뢰성: 타입검사, 예외 처리
- 확장성: 요구 사항에 맞추어 원하는 기능을 추가하고 확장하기 용이해야 함
- 유연성: 표현하고 싶은 내용과 기술을 자유롭게 수용하고 기능추가가 용이해야 함
- 유지 보수성: 버그수정, 시스템 운영 유지, 장애 대응, 신규 기능 추가 등 지속적인 배용이 발생하므로 관리가 용이 해야 함.
- 프레임워크 사용 전 Document를 사용하는 것이 중요함.
-
성장을 위한 준비 과정
- 코드 따라가기
- 알고리즘을 사용만 할 수 있지만 작동 원리를 알아야한다.
- 알고리즘 문제들을 풀면서 인덱스별로 어떻게 값이 변화되고 출력되는지 수기로 작성하며 이해하는 연습을 해보자.
- 코드에 대한 이해가 높아져야 타인이 작성한 코드를 이해하는 것이 용이해진다. ⇒ 대부분은 누군가가 작성한 코드 위에서 일을 하게 된다. 코드 리뷰 능력은 필수라고 생각됨.
- 마인드 맵
- 개발도 마인드 맵이 필요하다 ⇒ DB 이해할 때 큰 역할을 함.
- 백엔드 개발을 할 때 ⇒ 분산처리에 대한 이해가 중요함. (DB ~ EC2 간의 부하 분산)
- DB ERD가 매우 중요하다. ⇒ 마인드 맵을 작성하여 논리적인 관계 정리가 선수되어 개바를 해 볼 필요가 있다.
- 시퀀스 다이어그램
- 플로우차트를 만들 때에는 너무 형식에 치우치지 말자. 중요한 것은 생각을 하는 것.
- 툴에 의존적이게 되면 안된다…!
- 시뮬레이션 (머리로 디버깅하는 경지…! ⇒ 언젠가는 도달해야하는 수준 / 10년 정도 걸립니다…!)
- 고객의 요구 사항에 대하여 그 자리에서 더 심화된 얘기를 할 수 있다.
- 소통을 잘하기 위해서는 소프트 스킬도 중요하지만 위 과정을 수 차례 시뮬레이션을 통해서 개발 능력을 키우는 것도 좋다.
- 회사 업무 ≠ 개인 성장 이라는 생각을 하지 말자.
-
Q&A
- 컴투스 내부에서도 코드 리뷰 하나요? ⇒ 서브 프로젝트를 통하여 코드 리뷰를 진행 (안바쁠때는 코드 리뷰 진행…!)
- 코드 리뷰 ⇒ 꼭 2이어야 할 수 있는 것인가? 자신의 코드를 리팩토링하고 타인들의 코드를 들여다보고 리뷰해보는 습관을 가져보자.
- 돈 받고 하는 일들은 대부분 재미가 없다 ⇒ 하지만 재미 없다고 손 놓고 있으면 그걸로 발전은 멈춘다. 스스로 재미와 의미를 부여하면서 해야한다.
- 최근에 관심을 가지는 기술 ⇒ VR/AI
- 컴투스 웹 서비스는 대부분 MSA를 이용하고 있나요?⇒ 유지 보수가 어렵거나 노후된 서버는 굳이 MSA로 전환하지 않는다. 블록체인 서비스 구축(Docker → 쿠버네티스)하면서 MSA로 전환할 예정!
- MSA로 전환하는 것도 다 비용이라서 손익을 잘 구분해야한다.
- 클린 아키텍트 책 추천!! ⇒ https://www.yes24.com/Product/Goods/77283734
- 일단 만들고 강의나 책을 보는 것이 이해가 더 깊어진다.
💻 컴투스 플랫폼 DB 특강
- DBMS의 변화
- NewSQL은 관계형 데이터베이스의 ACID 보장 + NoSQL의 분산 스케일링 기능
- 변화의 이유: 생산성에 중점을 두게 되면서 변화하게 됨.
- RDBMS가 현재까지 사용되는 이유: 비용/안정성/유저친화적인 특징
- DB 병목의 여러 요소들과 그에 대한 해결 방안
- 설계 / 샤딩
- 인덱스 / 인덱스 튜닝
- 느린 쿼리 / 쿼리 튜닝
- 데드락
- 서버 리소스 / 모니터링
- 서버 개발자 업무 중 DB 업무가 절반 정도 된다. 하지만 DB 학습에는 소홀한 모습을 보인다.
- 게임서버 개발 시 고려애햐 할 것들 ⇒ 장애 발생 원인의 대부부분은 DB에서 발생한다.
- 최대 동시 접속자 수
- 부하 테스트
- 확장 가능한 아키텍처
- 게임서버 방식을 고려한 아키텍처 설계
- 게임 4대 명검 meme
- 개발 및 운영에 필요한 DB 작업
- 데이터 모델링 (기획서에 대한 적확한 이해가 중요하다.)
- 개념 ⇒ 논리 ⇒ 물리 과정으로 모델링을 하는 것이 좋다.
- 오히려 DB 모델링을 정확하게 할 수록 시간이 절약된다.
- 테이블/인덱스 스키마 작성
- 인덱스/ 아키텍처에 대한 깊은 이해가 필요하다.
- 서버 개발자 ⇒ DBA로 전향하는 케이스가 심심치 않게 있다. (대부분 에이스들이 간다.)
- 쿼리 작성
- DB 패치
- 서버 모니터링
- 쿼리 최적화
- 운영에 필요한 CS 등등…
- 게임 개발 내에서 Redis의 활용 ⇒ 캐시 데이터 & 리더보드
- 인덱스의 분포도 (Cardinality): https://itholic.github.io/database-cardinality/
- 인덱스 조회 ⇒ 주고를 가지고 DB 페이지에서 조회가 되기 때문에 분포도가 높을 수록 index설정은 효율적이지 않다.
- Cardinality에 대한 개념 이해
- index 전략에 대한 이해
- index 작동 과정에 대한 이해
- dB 성능 비교에 대한 이해
- 게임 단위의 팀 내에서 DBA가 없을 확률이 높기 때문에 게임 서버 개발자가 담당해야 할수도 있다.
- 모니터링 (Grafana)
- 컴투스에서 사용하는 시각화 툴
- 수시로 모니터링하는 습관을 가지자…!
- 데이터 모델링 (A-query)
- 높은 가성비
- 표준 용어 사전에 등록된 용어를 속성명으로 사용
- 논리 속성명이 결정되면 물리 컬럼명과 데이터타입은 자동 연결
- 표준화 작업이 선행되어야 함. ⇒ 향후 유지보수에 주요한 역할을 함.(데이터의 형변부해환)
- 컴투스의 게임서버 개발 언어 (많이 쓰는 순으로)
- 컴투스의 게임서버에 사용하는 DB
- 클라우드를 사용하지 않는 이유?
- GCP
- 일 잘하는 서버 개발자가 되려면
💻 컴투스 플랫폼 블록체인 특강
- 서버에 중요한 요소 3가지: 신뢰성, 보안, 성능
- DB의 중요성
- 책 추천(24시간 365일 서버/인프라를 지탱하는 기술**)**: https://www.yes24.com/Product/Goods/3377489
🌱 오픈월드 취뽀 성공기
- 진로 이야기
- 새싹 이야기
- 직장 이야기
📚 게임 서버 개발에 사용되는 기술 소개와 학습 방법
- 게임 서보 소개
- 게임서버 개발 기술
- 게임 서버 학습