서버 프로그래머 포트폴리오는 화면이 화려하지 않아도 괜찮습니다. 중요한 것은 서버가 어떤 구조로 돌아가는지, 많은 요청이 몰릴 때 어떻게 버티는지, 문제가 생겼을 때 어떻게 해결했는지를 명확하게 보여 주는 것입니다. 무엇을 어떻게 담을지 정리했습니다.
포트폴리오에 담을 핵심
- 서버 구조도: 클라이언트, 서버, 데이터베이스가 어떻게 연결되는지 한눈에 보이는 그림
- 통신 설계: 주요 패킷 종류와 데이터 형식, 처리 흐름
- 동시성 처리: 스레드 구조와 공유 데이터 보호 방법
- 성능 측정: 부하 테스트 방법과 결과, 개선 전후 비교
- 문제 해결 사례: 개발 중 겪은 버그와 원인, 해결 과정
- 동작 영상: 여러 클라이언트가 동시에 접속해 동작하는 모습
모든 항목을 다 갖추기 어렵다면 구조도, 동작 영상, 문제 해결 사례 세 가지를 우선 준비합니다. 이 세 가지만으로도 서버를 어떻게 설계하고, 실제로 돌려 보고, 문제를 해결했는지 전달할 수 있습니다.
구조도 그리는 법
구조도는 복잡하게 그릴 필요가 없습니다. 상자와 화살표로 주요 구성 요소와 데이터 흐름을 보여 주면 충분합니다. 다만 화살표마다 어떤 데이터가 오가는지 짧게 적어 두면 이해가 훨씬 쉬워집니다.
하나의 기능을 예로 들어 흐름을 따라가는 그림도 효과적입니다. 예를 들어 '플레이어가 아이템을 구매할 때' 클라이언트 요청, 서버 검증, 데이터베이스 저장, 결과 응답까지 순서대로 보여 주면 설계 능력이 자연스럽게 드러납니다.
구조도 옆에 왜 이런 구조를 택했는지 한두 문장을 덧붙이는 것도 좋습니다. 예를 들어 처리 스레드를 몇 개로 나눈 이유나, 데이터베이스 저장을 별도 작업으로 분리한 이유를 적어 두면 설계 판단 능력이 드러납니다.
부하 테스트 결과 보여 주기
서버 포트폴리오에서 설득력을 높이는 자료는 직접 측정한 성능 결과입니다. 가상 접속자를 늘려 가며 응답 시간과 처리량이 어떻게 변하는지 측정하고, 병목을 찾아 개선한 과정을 보여 줍니다.
| 항목 | 적을 내용 |
|---|---|
| 측정 환경 | 사용한 컴퓨터 사양, 운영체제, 테스트 도구 |
| 측정 방법 | 가상 접속자 수, 요청 종류, 측정 시간 |
| 결과 | 응답 시간과 처리량 그래프 |
| 개선 | 병목 원인, 바꾼 방법, 개선 후 결과 |
숫자 자체가 크지 않아도 괜찮습니다. 개인 컴퓨터에서 측정한 결과라도 방법과 개선 과정이 논리적이면 충분히 의미 있는 자료가 됩니다.
문제 해결 사례 쓰는 법
- 현상: 어떤 문제가 보였는지(예: 접속자가 늘면 일부 메시지가 사라짐)
- 추적: 로그나 디버거로 원인을 어떻게 좁혔는지
- 원인: 실제 원인이 무엇이었는지
- 해결: 어떻게 고쳤고, 다시 생기지 않게 무엇을 추가했는지
이 구조로 두세 개 사례를 정리해 두면 면접에서 그대로 활용할 수 있습니다. 서버 직군 면접관은 지원자가 문제 상황에서 어떻게 생각하는지를 중요하게 봅니다.
코드 저장소와 영상
코드 저장소에는 서버를 실행하는 방법, 테스트용 클라이언트 실행 방법을 설명 파일에 적어 둡니다. 데이터베이스 구조를 만드는 스크립트도 함께 정리하면 다른 사람이 쉽게 재현할 수 있습니다. 비밀번호나 접속 정보 같은 민감한 값은 저장소에 올리지 않도록 주의합니다.
동작 영상은 여러 클라이언트 창을 동시에 띄워, 한쪽의 행동이 다른 쪽에 반영되는 모습을 보여 주면 효과적입니다. 서버 로그 창을 함께 보여 주면 내부에서 무슨 일이 일어나는지도 전달할 수 있습니다.
제출 전 점검
- 구조도와 실제 코드 구조가 일치하는가
- 성능 수치에 측정 환경이 적혀 있는가
- 저장소에 민감한 정보가 포함되어 있지 않은가
- 설명 파일만 보고도 실행할 수 있는가
마지막으로 저장소를 새 컴퓨터에 내려받아 설명 파일대로 실행해 보는 과정을 한 번 거치면, 빠진 파일이나 설정을 미리 찾을 수 있습니다.
SBS아카데미게임학원 게임프로그래밍 과정은 온라인 멀티플레이까지 포괄하는 프로젝트 기반 수업을 진행해, 동작 영상과 구조 설명을 갖춘 서버 포트폴리오의 출발점이 될 수 있습니다.
자주 묻는 질문
서버 포트폴리오에도 클라이언트가 필요한가요?
동작을 보여 주기 위해 간단한 클라이언트가 있으면 좋습니다. 그래픽은 단순해도 괜찮으니 서버 기능이 잘 드러나게 만듭니다.
팀 프로젝트에서 서버를 맡았다면 어떻게 표시하나요?
구조도에서 본인이 설계하고 구현한 부분을 표시하고, 기술 문서에 담당 범위를 구체적으로 적습니다.
