개요
- 동료 간의 협업과 학습을 통해 프로그래밍의 기본 역량과 문제 해결 능력을 쌓기 위해 42 Seoul에 참여하였습니다.
- 42 Seoul의 과제는 목표와 제한사항만 주어지며, 과제 구현을 위한 방법과 지식은 스스로 또는 동료와 함께 학습하고 연구해야 합니다.
학습 내용
- 코드 리뷰 문화 경험
- libc의 일부분을 C/ASM을 이용하여 재설계하는 프로젝트로 라이브러리의 개념과 어셈블리어의 기초 학습
- 3D게임을 제작하며 Raycasting에 대한 지식과 맵 유효성 검사, 수학적인 로직을 코드로 구현
- bash 클론코딩을 통해 *nix 시스템에 대한 개념, SIGNAL, 시스템 콜, 프로세스와 스레드 등의 개념에 대해 학습
- Docker, K8S를 이용한 과제 (Dockerize 및 컨테이너 오케스트레이션)로 리눅스 컨테이너에 대한 이해, 컨테이너 생성 / 오케스트레이션의 기본적인 개념 습득
- nginx와 유사한 C++ 웹 서버 제작, Reactor 패턴을 이용한 C10K 문제 해결, HTTP 1.1 프로토콜과 CGI에 대한 학습
- RFC 문서량이 방대하기 때문에 Nginx의 상황별 기능을 원본 소스코드와 Wireshark로 분석하며 구현
- 명확하지 않은 부분은 RFC 문서 참조
- CGI 프로토콜에 대한 RFC 문서는 양이 적어 통번역을 통해 학습
- nginx와 유사한 throughput을 위해 부하 테스트 툴로 비교하였으며, 데이터 송수신 버퍼를 튜닝하여 nginx와 비슷한 성능으로 개선
- 웹 핑퐁게임 제작을 통해 TypeSctipt 기반의 웹 풀스택 개발 경험
- 팀원이 많아 맡은 기능 구현에 대한 책임을 부여하기 위해 TDD 도입
- 문제가 있는 코드의 merge를 방지하기 위해 CI 도입
- WebSocket과 HTTP API를 모두 사용하기 때문에 근거에 따른 기능적인 구분
- 채팅 모듈에 Write-Behind 캐시 전략을 사용해 서비스의 성능 향상
더보기