펌웨어 · 시스템 소프트웨어 · 실시간 애플리케이션

데이터의 흐름을 이해하고,
병목을 구조로 해결합니다.

ARM Cortex-M 펌웨어, C++ 비동기 HTTP 서버, macOS·iOS 제품과 GPS 기반 실시간 서비스를 개발하며 디바이스에서 통신·저장·사용자 인터페이스까지 이어지는 데이터 흐름을 다뤄 왔습니다. 문제를 수치로 설명하고, 실패 조건을 끝까지 추적하며, 동료가 운영할 수 있는 구조로 개선합니다.

검증 기준 실무 측정 결과, App Store 배포, 수상 기록, 공개 저장소처럼 직접 확인할 수 있는 근거만 담았습니다.
3년 3개월소프트웨어 개발 경력애플리케이션 · 펌웨어
-90%데이터 저장 메모리Backpressure · Batch · Query Cache
-40%실시간 처리 CPUO(n) → O(1) · A16 → A14
31K→170실시간 UI 객체 축소96명 · 327지표 · 2Hz
01 / 소프트웨어 경험

디바이스부터 제품까지 잇는
소프트웨어 엔지니어링 경험

제약이 큰 임베디드 환경, C/C++ 시스템 프로그래밍, Web↔Native 통합, 앱 설계·배포까지 서로 다른 계층에서 동작하는 소프트웨어를 구현했습니다.

실무 · 2020.01–2021.09

ARM Cortex-M 펌웨어 개발

C/C++로 Cortex-M0+ 베어메탈 펌웨어와 PSoC4 주변장치 제어를 구현했습니다. 스마트워치, 캠핑카 터치 패널, IR 리모컨, TPMS 테스트 도구를 개발하며 제한된 메모리와 HW–FW–App 연동 문제를 디버깅했습니다.

C/C++ · 베어메탈 · BLE · 독자 프로토콜
해커톤 수상 · 2023.10–2024.07

42Box macOS 통합 플랫폼

교육기관 내 여러 웹 서비스를 하나의 macOS 제품으로 통합했습니다. WebKit으로 FE·BE와 네이티브 기능을 연결하고, GitHub Actions 기반 릴리즈·버전 관리 자동화를 구축했습니다. 기획과 macOS 개발을 맡아 정보통신기획평가원장상을 수상했습니다.

WebKit · 배포 자동화 · 정보통신기획평가원장상
macOS 저장소 보기 ↗
프로젝트 리딩 · 2024.04–2024.07

42Box iOS 제품 개발·배포

macOS 제품을 iOS 사용 흐름에 맞게 확장하고 App Store에 배포했습니다. WKWebView 탐색, 폴더 기반 링크 관리, NSCache, Share Extension을 구현하고 Tuist 모듈 구성과 Fastlane·GitHub Actions 기반 TestFlight 배포 파이프라인을 구축했습니다.

App Store · Share Extension · CI/CD
iOS 저장소 보기 ↗ App Store ↗
팀 프로젝트 · C++98

비동기 HTTP/1.1 웹 서버

KQueue 이벤트 루프와 POSIX 소켓으로 다중 클라이언트 요청을 비동기 처리했습니다. HTTP 파싱, 주요 Method, CGI, 설정 파서를 인터페이스 중심으로 분리하고 Siege로 동시 요청을 검증했습니다.

KQueue · POSIX · CGI · 부하 테스트
저장소 보기 ↗
모듈화 · 3D 데이터 · 2024.02

Swifty Proteins 구조 설계

단백질 구조 데이터를 파싱해 리간드 위치를 계산하고 SceneKit으로 3D 시각화했습니다. Tuist 기반 모듈 구조와 프로토콜 인터페이스를 설계해 데이터 해석, 도메인 로직, 표현 계층의 책임을 분리했습니다.

SceneKit · 데이터 파싱 · 모듈화 아키텍처
저장소 보기 ↗
42서울 · C 시스템

프로세스·스레드·Unix 시스템 프로그래밍

Philosophers에서 스레드 동기화와 교착 상태를, minishell과 pipex에서 fork·pipe·signal·file descriptor를 다뤘습니다. libft, printf, get_next_line을 직접 구현하며 표준 라이브러리 아래의 동작을 학습했습니다.

pthread · mutex · fork · pipe · signal
C/C++ 저장소 모아보기 ↗
02 / 운영 성과

실서비스에서 검증한
성능과 운영 안정성

기능 구현에서 멈추지 않고 데이터의 입력부터 저장·표시·복구까지 추적했습니다. 실제 운영 환경에서 원인을 확인하고 개선한 결과입니다.

iOS UI · 2차원 가상화

3만 셀 실시간 스프레드시트 재설계

최대 96명과 327개 지표가 2Hz로 갱신되는 화면에서 SwiftUI View Graph와 스크롤 offset 동기화를 병목으로 확인했습니다. 하나의 UICollectionView와 Custom Layout으로 행·열을 함께 가상화하고, 고정 행·열은 contentOffset 기반으로 배치했습니다.

31,392개 View → 화면 내 약 170개 Cell
리팩토링 기록 보기 ↗
부분 갱신 · 화면 정합성

상태 변화의 영향 범위별 갱신

실시간 값은 현재 보이는 셀만 직접 갱신하고, 평균은 해당 section만 다시 불러오도록 범위를 줄였습니다. 벤칭·Goal 상태의 갱신 누락을 발견한 뒤에는 행, section, 전체 데이터 중 실제 영향 범위에 맞는 방식을 선택하도록 경계를 다시 설계했습니다.

셀 직접 갱신 · 부분 reload · 전체 reload 분리
알고리즘 · 프로파일링

핫 패스의 O(n) 연산 제거

Instruments로 매 데이터 처리마다 반복되는 선형 자료구조 연산을 병목으로 특정했습니다. Deque 기반 O(1) 구조와 DB 접근 개선을 적용해 낮은 사양에서도 안정적으로 동작하도록 만들었습니다.

CPU -40% · O(n) → O(1) · A16 → A14
역압 제어 · 메모리

무제한 쓰기 대기열 제어

실시간 누적 데이터의 DB 쓰기 속도가 입력을 따라가지 못해 대기열과 메모리가 함께 증가하는 문제를 분석했습니다. 큐 상한, batch transaction, prepared statement 재사용으로 흐름을 안정화했습니다.

메모리 사용량 -90%
TCP / UDP · 운영

현장 통신 장애의 레이어 분리 진단

장비 연결 불안정과 데이터 유실을 소켓 로그와 DB 기록으로 교차 분석했습니다. 셀·허브·AP 구간의 상태를 분리해 현장 방문 없이 장애 범위를 좁히고 수정 근거를 제공했습니다.

운영 장애 원격 진단
실시간 처리 · 시간 정확도

지연 패킷 기반 시간 오차 보정

약 0.5초 늦게 도착하는 GPS 패킷과 타이머 드리프트를 분리해 분석했습니다. 10Hz 속도 이력 적분과 구간 보간을 적용해 결과 오차를 줄였습니다.

시간 오차 약 1초 → 5–50ms
자동 복구 · 안정성

타임아웃과 재시도의 세대 격리

무응답 작업을 watchdog으로 감지하고, 세대 카운터로 과거 타이머가 현재 흐름을 중단하지 못하게 했습니다. backoff와 jitter로 동시 재시도 버스트도 분산했습니다.

재시도 상한 · 과거 타이머 격리
계측 · 현장 진단

운영 상태를 직접 확인하는 진단 도구

앱 메모리와 시스템 가용 메모리를 직접 조회하고, AP 상태와 GPS 품질을 현장에서 확인할 수 있게 만들었습니다. 장애가 발생한 뒤 추측하지 않고 당시 상태를 근거로 판단할 수 있도록 계측 범위를 넓혔습니다.

메모리 · AP · GPS 현장 진단
03 / 일하는 방식

문제를 숨기지 않고,
근거를 남기며 끝까지 개선합니다.

구호보다 실제 문제를 해결할 때 반복해서 선택해 온 행동과 판단 기준을 정리했습니다.

01 · 측정

감이 아니라 숫자로 답합니다.

Instruments와 로그로 병목 가설을 검증합니다. UI 구조를 바꾼 뒤 주요 비용이 View Graph 갱신에서 실제 평균값 계산으로 이동한 것까지 확인했고, CPU -40%, 메모리 -90%, 시간 오차 약 1초→5–50ms처럼 전후 조건과 결과를 남깁니다.

02 · 협업

계층과 직군 사이의 경계를 연결합니다.

HW·FW·App의 문제를 레이어별로 설명하고, 42Box에서는 FE·BE·디자인과 기획부터 배포까지 조율했습니다. 동료가 같은 모델로 이야기하고 안전하게 확장할 수 있는 구조를 선호합니다.

03 · 책임

성능과 정확성을 함께 지킵니다.

부분 갱신을 줄이는 과정에서 벤칭·Goal 상태가 일부 셀에 반영되지 않는 문제를 확인하고 갱신 범위를 다시 분류했습니다. OOM, 무응답, 오래된 타이머처럼 정상 경로 밖의 조건도 끝까지 추적합니다.

04 · 확장

플랫폼보다 문제를 먼저 봅니다.

펌웨어에서 C/C++ 시스템, Web↔Native, macOS·iOS 제품, 실시간 데이터로 영역을 확장했습니다. 기술 선택의 근거와 생성 결과를 직접 이해하고 측정으로 검증합니다.

목표와 제약부터 전달

전략, 팀 목표, 운영 제약과 완료 조건을 먼저 정의하고 필요한 맥락만 AI에 제공합니다.

비용을 의식해 위임

반복 작업은 맡기되 불필요한 에이전트·도구·컨텍스트를 줄여 시간과 비용을 통제합니다.

판단과 책임은 직접

동시성, 메모리 모델, 운영 위험처럼 책임이 필요한 판단은 직접 이해하고 검토합니다.

04 / 기술

실무와 프로젝트에서 사용해 온 기술

임베디드, 시스템 프로그래밍, Apple 플랫폼 제품, 실시간 서비스의 개발·배포·운영에 사용한 기술입니다.

언어

SwiftCC++

시스템 · 임베디드

POSIXKQueuepthreadTCP / UDPARM Cortex-MBLE

제품 · 데이터

iOSmacOSSwiftUIUIKitWebKitSceneKitCombineSQLite

빌드 · 검증

TuistFastlaneGitHub ActionsInstrumentsXCTestSiege