# (주)아레스 자기소개서

---

## 지원동기

### 시뮬레이터 안에서 본 익숙한 문제

저는 귀사의 VR 낙하산 강하 시뮬레이터 APS®를 살펴보며 익숙한 문제의식을 발견했습니다. 풍향·풍속·기상 효과를 실시간으로 반영하면서 모션 제어와 3D 렌더링을 동기화하는 구조는, 결국 **다중 사건의 동시 처리와 일관성 보장** 문제로 수렴합니다. 이 지점이 제가 백엔드에서 다뤄온 업로드 파이프라인의 동시성 제어 문제와 본질적으로 같다고 판단했습니다.

CloudSharp 프로젝트에서는 tus 프로토콜 기반 대용량 업로드의 Finalize 단계에서 중복 실행 문제를 마주했습니다. 분산 락 인프라 없이도 단일 SQL UPDATE 기반 CAS 패턴으로 원자적 점유를 구현했고, 파일 I/O와 DB 트랜잭션을 분리해 안전성과 응답성을 함께 확보했습니다. 이 과정에서 "정확성을 보장하면서도 실시간성을 잃지 않는 구조"가 백엔드뿐 아니라 시뮬레이션의 핵심 가치라는 점을 체득했습니다.

귀사가 강조하는 Agile & DevOps 기반의 지속적 통합과 TDD 문화 또한 제 개발 방식과 맞닿아 있습니다. CloudSharp에서는 14개의 코딩 컨벤션과 ADR을 함께 운영하고 GitLab CI로 단위·인프라 테스트를 자동화했습니다. 단순한 기능 구현이 아니라 품질을 측정 가능한 형태로 관리하는 개발 문화를 직접 만들어본 경험입니다.

이처럼 귀사의 M&S 시뮬레이터 개발 방향과 제가 쌓아온 동시성·성능·품질 관리 경험이 자연스럽게 연결된다고 판단했고, 이것이 지원을 결심한 가장 큰 이유입니다.

---

## 업무 시 강점

### 원인을 끝까지 추적하는 실행력

저의 가장 큰 강점은 **시스템 문제의 원인을 끝까지 추적해 측정 가능한 결과로 개선하는 역량**입니다.

CloudSharp 프로젝트에서 tus 기반 대용량 파일 업로드 시스템의 Finalize 단계 중복 실행 문제를 마주했습니다. tusd hook과 백그라운드 Worker 두 경로에서 같은 업로드 세션이 동시에 처리될 수 있어, 하나의 파일이 두 개의 메타데이터로 등록되는 위험이 있었습니다. 일반적인 해법은 Redis Redlock 같은 분산 락 인프라를 도입하는 것이지만, 운영 복잡도와 장애 지점이 함께 늘어나는 단점이 있었습니다.

저는 별도 인프라를 추가하지 않고 **CAS(Compare-And-Swap) 패턴**을 단일 SQL UPDATE로 구현했습니다. `UPDATE upload_session SET status='FINALIZING' WHERE status='UPLOADING'` 한 줄로 원자적 점유를 보장하고, affected_rows 값으로 처리 여부를 판단했습니다. 또한 느린 파일 I/O 구간과 짧은 DB 트랜잭션 구간을 분리해, 동시성 제어 중에도 다른 요청이 블로킹되지 않도록 설계했습니다. 마지막으로 Recovery Worker를 두어 10분 이상 FINALIZING 상태에 머문 세션을 자동 복구하도록 했습니다.

그 결과, 별도 분산 락 인프라 없이 **중복 Finalize를 0건으로 차단**했고, DB UNIQUE 제약과 함께 이중 안전장치를 구축할 수 있었습니다. CAS 방식은 PostgreSQL이 보장하는 원자성에만 의존하므로 추가 인프라 비용이 없고, 장애 시 자동 복구까지 포함된 견고한 구조였습니다.

이 경험은 단순히 동작하게 만드는 것을 넘어, 문제의 본질을 분석하고 가장 단순하면서도 안전한 해법을 선택하는 개발 방식을 익히는 계기였습니다. 입사 후에도 시뮬레이터의 실시간성과 정확성이라는 까다로운 요구사항 앞에서, 원인을 끝까지 추적하고 측정 가능한 결과로 만드는 방식으로 기여하겠습니다.

---

## 입사 후 포부

### 안정성과 실시간성을 함께

입사 후에는 **국방 M&S 도메인의 안정성과 실시간성을 함께 책임지는 SW 개발자**로 성장하고 싶습니다.

귀사는 2030년 M&S 분야 세계 중심을 목표로, VR·AR·MR·XR 기술과 자체 시뮬레이션 엔진을 결합한 실감형 훈련체계를 확장하고 있습니다. 이러한 방향 안에서 시뮬레이션의 정확성과 실시간 응답성을 동시에 책임지는 개발자가 되고자 합니다.

입사 초기에는 M&S 도메인 지식과 시뮬레이터 코드베이스를 빠르게 파악하는 데 집중하겠습니다. C#과 C++ 개발 경험은 이미 갖추고 있으므로, 기존 시뮬레이션 엔진의 구조와 풍향·풍속·기상 효과 같은 도메인 모델을 이해하는 것이 우선 과제입니다. Agile 스프린트 흐름에 적응하며 코드 리뷰와 TDD에 적극적으로 참여하겠습니다.

1년 차에는 시뮬레이션 모듈 한 단위를 단독으로 설계하고 구현할 수 있는 수준에 도달하는 것을 목표로 합니다. CloudSharp에서 운영했던 코딩 컨벤션과 ADR 작성 경험을 살려, 팀의 CI 파이프라인과 테스트 자동화 개선에도 기여하겠습니다.

3년 차에는 시뮬레이션 엔진 구조 개선과 AI·VR 기술 융합 제안에 참여할 수 있는 개발자로 성장하겠습니다. AI SW 개발 직무까지 함께 다루는 귀사의 특성상, 백엔드와 AI 연동 경험을 살려 **훈련 데이터 분석이나 행동 예측 모델을 시뮬레이터에 접목**하는 영역에서 기여할 여지가 크다고 봅니다.

국방 M&S 도메인과 Unity 3D 실무 경험은 아직 부족하지만, HLA/RTI 같은 M&S 표준 자료와 Unity 기반 물리 시뮬레이션 학습을 통해 보완해 나가고 있습니다. 입사 후에도 도메인 지식과 기술 깊이를 동시에 키워, 귀사의 "World Best" 비전에 보탬이 되는 개발자로 성장하겠습니다.

---

## 성장 과정

### 동작에서 측정으로

저의 개발자 정체성은 "기능이 동작하는 것"에서 "결과를 측정할 수 있는 것"으로 관점이 바뀐 한 시점에서 형성되었습니다.

처음 개발을 시작했을 때는 요구사항대로 화면이 그려지고 API가 응답하면 충분하다고 생각했습니다. 이 관점이 바뀐 계기는 .NET Blazor 환경에서 대용량 파일 업로드를 처리하기 위한 **TusBlazorClient 오픈소스 라이브러리**를 직접 만들어 NuGet에 배포하면서였습니다. 라이브러리는 제가 쓰는 코드가 아니라 다른 개발자가 쓰는 코드이므로, 동작 여부만으로는 부족했습니다. C# 델리게이트 직렬화 불가 문제, JS 모듈 생명주기, 옵션 동적 변경 등 사용자가 마주칠 수 있는 시나리오를 예측하고 Selenium E2E 테스트로 검증해야 했습니다.

이 경험은 CloudSharp 프로젝트에서 더 깊어졌습니다. tus 기반 업로드 파이프라인의 Finalize 동시성 문제를 마주했을 때, "어떻게 동작하게 할까"가 아니라 "어떤 조건에서 깨질 수 있는가"부터 분석했습니다. CAS 패턴으로 분산 락 없이 원자적 점유를 보장하고, Recovery Worker로 교착 상태를 자동 복구하는 구조를 설계했습니다. 동시에 14개의 코딩 컨벤션 문서와 ADR을 정리하며 **결정의 이유까지 측정 가능한 형태로 남기는 습관**을 만들었습니다.

지금의 저는 새로운 문제를 만나면 가장 먼저 원인 분석과 측정 지표부터 정의하는 개발자입니다. 단순한 기능 구현보다 시스템이 깨질 수 있는 경계 조건에 관심을 두고, 그 결과를 수치와 문서로 남기려고 합니다. 귀사의 시뮬레이터 개발에서도 정확성·실시간성·안정성이라는 까다로운 요구사항을 측정 가능한 형태로 다루는 데 기여하고 싶습니다.