우리 팀(프로젝트)을 소개합니다.
엔픽셀의 신규 모바일 mmorpg 프로젝트입니다.
이런 동료를 기다리고 있습니다.
이런 일을 함께 하실 분 (게임 업계 경력이 없으시더라도 무방합니다!)
- 모바일 MMORPG 서버를 초기 단계에서 함께 설계해 나가실 분
- 기존 방법을 답습하기보다는 목적에 맞는 기술 스택을 함께 의논하며 결정해 나가실 분
- 새로운 언어&프레임워크를 함께 공부하며 성장해 나가실 분(뛰어난 분들 덕분에 초반에 걱정했던 것 보다 꽤 잘 동작하고 있습니다!)
- 오픈 소스를 활용해 빠르게 개발하고, 더 나아가서 생태계에 기여하고 싶으신 분
이런 요건들을 가지고 계신 분
- 프로그래밍에 대한 기본적인 지식을 가지고 계신 분
- OS, 자료구조, 네트워크 등 컴퓨터 공학의 기본적인 지식을 가지고 계신 분
- 새로운 프로그래밍 언어나 기술들을 빠르게 습득하고 적용하실 수 있는 분
- 문제의 해결책을 함께 이야기하면서 풀어나갈 수 있도록 좋은 커뮤니케이션 능력을 가지신 분
현재까지 선정한 기술 스택(바뀔 수도 있습니다! 오셔서 함께 고민해 주시면 좋을 것 같아요)
- Rust + ECS: C++의 성능을 가져가면서도 피하기 어려운 메모리 관련 오류를 예방할 수 있어서 선택했습니다.
- Kotlin + Spring(WebFlux): 백엔드 개발에 많이 활용되는 자바 계열 언어 중 가장 최신이면서도 대중적이어서 선택했습니다.
- Flutter(Dart): 게임 데이터 툴 제작에 활용되고 있으며, 좋은 성능, 쉬운 사용법, 실시간 디버깅 때문에 선택했습니다.
- Kafka: 분산 서버들 간에 메시지를 주고받거나 비동기/분산 처리를 위해 선택했습니다.
- DB: 트랜잭션을 활용할 수 있는 RDB 계열로 선택하되, 필요한 경우 Redis, NoSQL 등을 활용할 계획입니다.
저희가 지향하는 것들입니다.
- 기획자는 게임을 만들고 프로그래머는 게임을 만들기 위한 시스템을 만듭니다.
- 프로젝트의 성공 뿐만 아니라 개개인의 실력 향상에 도움이 되는 선택을 합니다.
- 너무 신기술이나 이론에 몰두하다 아무것도 못하기 보다는, 동작하는 소프트웨어를 빨리 만들어 냅니다.
- 컴파일러보다 더 잘할 수 있다는 욕심을 내지 않습니다.
저희가 좋아하지 않는 것들입니다.
- 락(안잡으면 레이스 컨디션, 잘못 잡으면 데드락)
- OCP를 단번에 깨버리는 싱글톤 패턴 및 글로벌 변수
- 해시 테이블 기반 프로그래밍
- Mutable 변수를 이리저리 조작하는 for, if문
- 불필요한 타이머를 사용하는 임시 로직
저희가 관심을 가지고 있는 기술들이에요!
- Microservice Architecture: event sourcing, CQRS, eventual consistency, choreography saga, message bus
- Domain Driven Design: bounded context, aggregate
- Functional Programming: reactive programming, entity-component system, parallelism, immutability, monad chain
- Test Driven Development: unit test, integration test
- Object-Oriented Programming: dependency injection, design patterns
|