About Me

김기범 프로필

김기범

[email protected] +82 10-6501-6514

서울특별시 강서구

V2X 보안 및 차량 통신 소프트웨어를 설계·구현하는 C++ 개발자

  • Tolling 시스템 단독 설계 및 실차 검증
  • V2X Security 양산 제품군 개발 참여
  • 5GAA·OmniAir Plugfest 검증 경험
  • 자체 CI/CD 시스템 설계 및 구현
“성능과 안정성 사이에서의 선택이, 결국 시스템의 신뢰를 결정한다고 믿습니다.”

V2X(Vehicle-to-Everything) 개발자로서, 제가 하는 모든 고민은 결국 도로 위의 안전으로 향합니다. 찰나의 시스템 오류가 생명에 위협이 되는 환경에서 안정성은 기본입니다.

하지만 수많은 메시지가 오가는 실제 환경에서는, 성능이 뒷받침되지 않는 안정성은 반쪽짜리에 불과하다고 생각합니다.

저는 단순한 이론에 머무르지 않고, 실제 환경에서 신뢰할 수 있는 시스템을 만들기 위해 성능과 안정성 사이의 균형을 고민하며 해답을 찾아가는 개발자가 되고자 합니다.

🔧 Tech Stack


  • Domain: V2X Security, V2X Tolling
  • Language: C++, C, Python
  • System: Embedded Linux, Cross-compilation, Network Protocol Analysis
  • Tools: CMake, Docker, Git, GDB, Wireshark

💼 경력


아우토크립트

2023.7 - 재직 중 | 2년 10개월 | 개발 | 팀원

주요 프로젝트

V2X 기반 통행 요금 징수 시스템(V2X Tolling) 단독 설계 및 구현

프로젝트 문서: V2X 기반 통행 요금 징수 시스템 (V2X Tolling) 개발

차량이 도로를 주행하면서 통신만으로 요금을 정산하는 시스템을 직접 설계하고 구현했습니다. 단순히 메시지를 주고받는 수준이 아니라, 실제 주행 환경에서 정확하게 인식하고 결제까지 이어지는 흐름을 만드는 것이 목표였습니다.

톨링 시스템에서 가장 까다로웠던 부분은 고속 주행 환경에서의 불안정한 위치 인식이었습니다. GPS 오차와 신호 튐으로 인해 톨존 진입/이탈이 흔들리면서, 잘못된 과금으로 이어질 가능성이 있었습니다. 이를 해결하기 위해 debounce 로직과 마지막 유효 차선 ID 캐싱을 적용해, 순간적인 노이즈에 영향을 받지 않도록 설계했습니다.

또한 SAE J3217 / J2735 기반 메시지 구조를 설계하면서, TAM/TUM 메시지를 유연하게 구성할 수 있도록 만들어 향후 기능 확장이 가능하도록 했습니다. 여기에 IEEE 1609.2 보안 라이브러리를 연동하여 메시지 서명/검증과 인증서 rotation까지 포함한 전체 흐름을 구성했습니다.

이 시스템은 24시간 이상 aging test와 실차 주행(약 100km/h) 환경에서 검증되었고, 5GAA 및 OmniAir Plugfest와 같은 글로벌 테스트 환경에서도 동작을 확인했습니다.

이 프로젝트를 통해 단순한 기능 구현을 넘어서, 실제 환경에서 신뢰할 수 있는 시스템을 만들기 위해 어떤 설계가 필요한지에 대해 깊이 고민하게 되었습니다.

차량용 보안 모듈(V2X Security) 개발 참여

프로젝트 문서: V2X-EE 차량용 보안 모듈 개발

차량 간 통신에서 가장 중요한 것은 메시지가 신뢰할 수 있는가 입니다. 이를 위해 IEEE 1609.2/1609.2.1 기반의 차량용 보안 모듈 개발에 참여했습니다.

이 모듈은 단순히 암호화를 적용하는 수준이 아니라, 인증서 다운로드부터 서명 생성/검증, CRL 처리까지 PKI 기반 인증서 생명주기 전체를 다루는 구조로 구성되어 있습니다. 저는 이 과정에서 인증서 관리 로직과 메시지 무결성 검증 시나리오 개발 및 테스트에 참여했습니다.

보안 시스템의 핵심은 '가용성을 해치지 않는 보안'에 있습니다. 임베디드 자원이 제한된 환경에서 ECDSA 서명 및 검증 연산이 시스템 전체 런타임에 미치는 영향을 최소화하기 위해 DMIPS/Latency 기반의 프로파일링을 수행했습니다. 이를 통해 암호 연산 오버헤드를 추적하고, 보안 가이드라인을 준수하면서도 최적의 처리 속도를 확보하는 경험을 했습니다.

Wireshark 커스텀 디섹터 개발 및 V2X 패킷 분석

프로젝트 문서: Wireshark 커스텀 디섹터 개발 및 V2X 패킷 분석

V2X 시스템을 개발하면서 가장 자주 마주했던 문제는 “지금 이 패킷이 왜 이렇게 해석되는지 알 수 없다”는 상황이었습니다.

표준 기반 메시지(J2735 / IEEE 1609.2)는 구조가 복잡하고, 기존 Wireshark만으로는 실제 디버깅에 필요한 수준의 분석이 어려웠습니다. 그래서 직접 커스텀 디섹터를 개발해 분석 환경을 개선했습니다.

C++ 기반 Wireshark 플러그인과 Lua post-dissector를 활용해 V2X 메시지를 사람이 이해할 수 있는 형태로 디코딩하도록 구현했고, Windows/Visual Studio 환경에서 Wireshark를 빌드하고 플러그인(DLL) 배포까지 정리했습니다.

개발 과정에서는 ASN.1 매핑 누락, 엔디언 처리 오류 등 다양한 디코딩 이슈를 겪었고, 이를 하나씩 분석하며 예외 처리 로직을 추가해 해석 정확도를 높였습니다.

또한 캡처/디스플레이 필터 세트와 설치 가이드를 함께 배포해 개발 및 QA 조직이 동일한 기준으로 패킷을 분석할 수 있도록 환경을 정리했습니다. 그 결과, 상위 모듈 로그와 PCAP을 교차 분석하는 과정에서 송수신 측 문제를 빠르게 분리할 수 있었고, 디버깅 시간도 크게 단축할 수 있었습니다.

이 경험을 통해 단순히 코드를 작성하는 것을 넘어서, 개발과 검증 효율을 함께 개선하는 도구를 만드는 것의 중요성을 배웠습니다.

타겟 장비 포팅 및 크로스 플랫폼 환경 구축

같은 소프트웨어라도, 어떤 하드웨어 위에서 동작하느냐에 따라 완전히 다른 문제가 발생합니다. Autotalks, NXP 등 다양한 타겟 장비에 소프트웨어를 포팅하면서, 이러한 환경 차이를 직접 다뤄왔습니다.

타겟 장비마다 SDK와 빌드 환경이 달라 의존성, 설정, 배포 방식까지 조정해야 했고, x86 Host와 ARM 타겟 간 차이를 고려해 CMake와 toolchain 기반의 크로스 컴파일 환경을 구축했습니다. 동일한 소스를 기반으로 멀티 플랫폼 바이너리를 생성하는 과정에서, 아키텍처별 라이브러리 의존성 문제를 해결하며 실행 환경 간 간극을 줄였습니다.

또한 Autotalks SDK를 활용해 하드웨어 가속 기반 보안 연산을 연동하고, 실제 장비에서의 서명/검증 성능을 최적화했습니다. x86 환경에서는 단위 테스트를 빠르게 수행하고, ARM 실장비에서는 통합 테스트를 진행하는 구조로 분리해
개발 효율과 검증 품질을 함께 개선했습니다.

이와 함께 Docker 기반 빌드 환경과 자동화 파이프라인을 연동해 개발 환경 편차를 줄이고 재현 가능한 빌드 환경을 구성했습니다.

이 경험을 통해, 플랫폼이 달라져도 동일한 품질로 동작하는 시스템을 만드는 것의 중요성을 배우게 되었습니다.

기타 실무 경험

CI / CD 시스템 자체 개발

프로젝트 문서: 자체 CI/CD 시스템(Jenkins 유사) 설계·적용, 테스트 자동화

임베디드 개발 환경에서는 빌드부터 배포까지의 과정이 복잡하고, 작은 실수 하나로도 전체 프로세스가 깨질 수 있습니다. 기존에는 이러한 과정이 수동으로 이루어지면서, 버전 관리나 배포 이력 추적이 어려운 문제가 있었습니다.

이 문제를 해결하기 위해, 코드 빌드부터 테스트, 배포까지 이어지는 자동화 파이프라인을 설계하고 구현했습니다.

Node.js 기반의 자동화 엔진을 개발하여 빌드 트리거, 작업 실행, 배포 흐름을 하나의 프로세스로 통합했고, 배포 산출물의 버전 관리와 히스토리 추적, 아티팩트 저장 기능까지 함께 구성했습니다.

또한 Flutter 기반 대시보드를 제작해 빌드 상태를 실시간으로 확인하고, 배포 이력 조회 및 작업 제어가 가능하도록 했습니다. 이를 통해 팀원들이 동일한 기준으로 빌드와 배포를 수행할 수 있는 환경을 만들었습니다.

이 자동화 파이프라인을 통해 수동 배포 절차를 줄이고, 릴리즈 프로세스를 표준화했으며, 문제가 발생했을 때 빠르게 롤백할 수 있는 기반을 마련했습니다.

이 경험을 통해 개발 속도뿐만 아니라 안정적인 배포를 가능하게 하는 시스템의 중요성을 체감했습니다.

로깅 및 모니터링 환경 구축

프로젝트 문서: spdlog 기반 로깅, Logdy 연동 실시간 모니터링 환경 구축

실장비에서 문제를 디버깅하다 보면, 결국 가장 중요한 것은 “지금 시스템에서 무슨 일이 일어나고 있는지 볼 수 있는가" 였습니다.

이를 위해 spdlog 기반의 로깅 구조를 설계하고, 로그 수집과 실시간 모니터링까지 이어지는 환경을 구축했습니다.

stdout, rotating file, syslog를 동시에 지원하는 멀티 싱크 구조를 적용해 다양한 환경에서도 일관된 로그를 남길 수 있도록 했고, 로그 레벨과 포맷을 표준화해 개발/운영 환경 간 분석 기준을 맞췄습니다.

또한 단말에서 발생한 로그를 중앙에서 확인할 수 있도록 Logdy 서버로 전송하는 수집 에이전트를 구현했습니다. 정규식 기반 파싱을 적용해 필요한 정보만 구조적으로 추출하고, UI를 통해 실시간으로 로그를 스트리밍하며 문제 상황을 빠르게 파악할 수 있도록 했습니다.

실제 환경에서는 네트워크 단절이나 장시간 테스트가 빈번하게 발생하기 때문에, tmux와 watcher를 활용해 로그 수집과 테스트가 중단되지 않도록 구성했고, 장기 aging test에서도 안정적으로 데이터를 확보할 수 있도록 했습니다.

이 환경을 통해 런타임 이슈를 보다 빠르게 식별하고 대응할 수 있었으며, “문제를 잘 해결하는 것만큼, 잘 관찰하는 것도 중요하다”는 것을 체감했습니다.

🎓 학력


한동대학교

2017.03 - 2023.08 | 졸업

학사조교

  • CGV (Computer Graphics and Vision) Lab 학사 연구조교 (2021.03 ~ 2023.08)

산학 연구

⚙️ 사이드 프로젝트