황승현

Seunghyun Hwang

Work Experience


DevOps Engineer at 토르드라이브

~present
  • 빌드 파이프라인 설계 및 개발
  • 사내 공통 개발 환경 수립

Software Engineer at 토르드라이브

~
  • 원격 조종 시스템 설계 및 개발
  • Performance-Critical 컴포넌트 설계 및 개발
  • 차량내 컴퓨터 네트워크 설계 및 개발
  • 다수의 사내 공용 라이브러리 설계 및 개발
  • 사내 기술 세미나 3회 발표

Education


컴퓨터학 공학 석사

~
  • 고려대학교 정보대학원
  • GPA 4.36/4.5
  • 분산 및 클라우드 컴퓨팅 연구실

정보통신공학심화 공학사

~
  • 영남대학교 기계IT대학
  • GPA 4.23/4.5
  • 멀티미디어 신호 처리 연구실에서 2년간 인턴

Honors and Awards


Employee of the Year

ThorDrive

Best Poster Runne-up

16th IEEE International Conference on Mobile Ad-Hoc and Smart Systems

학업성적우수 장학금

~

영남대학교

삼성전자 부문 최우수상

제14회 임베디드 소프트웨어 경진대회

앱 개발 부문 장려상

공공데이터 활용 아이디어 발굴 및 앱 공모전

Publications


Seunghyun Hwang, Kwangsik Chung, Joonmin Gil, Heonchang Yu, Eunyoung Lee

Efficient State Maintenance in Serverless-based Workflow Using Host Storage

The 3rd International conference on Interdisciplinary research on Computer Science, Psychology, and Education (ICICPE 2019), 2019. pp.31-34.

Seunghyun Hwang, Heeseock Choi, Heonchang Yu

Implementation of Low-latency Message Delivery for Serverless based Workflow

The 16th IEEE International Conference on Mobile Ad-Hoc and Smart Systems (IEEE MASS 2019), 2019. pp.170-171. 10.1109/MASSW.2019.00044.

황승현, 강지훈, 유헌창

Serverless 기반 워크플로 실행에서 Cold Start 완화를 위한 런타임 인터페이스에 관한 연구

한국정보처리학회, 2019. pp.649-652. 10.3745/PKIPS.y2019m10a.649.

황승현, 강지훈, 정광식, 유헌창, 길준민

Tepid Start: 유휴 Serverless 컨테이너의 관리 전략과 구현

한국정보처리학회, 2019. pp.15-18. 10.3745/PKIPS.y2019m05a.15.

황승현, 강지훈, 정광식, 유헌창

IoT 환경에서 도커 컨테이너의 서비스 재시작 시간에 관한 분석

한국정보처리학회, 2018. pp.964-967. 10.3745/PKIPS.y2018m10a.964.

황승현, 박봉우, 이재학, 유헌창

클라우드 환경에서 모니터링 주기가 가상머신의 성능에 미치는 영향 분석

한국정보처리학회, 2018. pp.260-261. 10.3745/PKIPS.Y2018M05A.260.

정호열, 김주곤, 황승현

영상 처리 모듈, 영상 출력 장치 및 방법

국내 출원, 2018. 10.8080/1020170079328.

Experience



2023

Virtual File System

C++ Personal Pinned lesomnus/vfs

본 라이브러리는 std::filesystem과 동일한 인터페이스의 가상 파일 시스템을 제공하며 파일 마운트, chroot, Union FS 등을 지원합니다. 잘못된 경로로 의도하지 않은 파일 시스템의 조작을 방지하기 위해 사용됩니다.

2022

Schema Description Framework

C++ Personal Pinned lesomnus/cray

본 프로젝트는 C++에 대한 깊은 이해와 C++ 표준에 대한 관심을 보여주기위해 시작되었습니다. CRay는 프로퍼티 트리에 접근하는 동시에 스키마를 정의할 수 있는 인터페이스를 제공합니다. 함께 제공되는 리포트 기능을 통해 설정파일의 잘못된 값이나 타입, 문서의 전체 구조를 한번에 확인 할 수 있습니다. 제공되는 API는 템플릿을 적극 활용하여 사용자가 잘못된 코드를 작성하는 것을 방지합니다.

C C++ GoLang gRPC gStreamer WebRTC Work

원격으로 차량을 조종하기 위해 사용자 접근 통제, 차량 센서 통합, 저지연 센서 데이터 스트리밍, 여러 차량으로의 호환성 등을 고려한 시스템을 설계하고 개발하였습니다. 차량의 네트워크 위치 파악 및 사용자 접근 통제 등 시스템 연결에 필요한 기능을 브로커 서비스로 분리해 종단간 연결 구조를 단순화하였습니다. 영상 스트리밍의 경우 gStreamerH.264, VP8 코덱을 활용하였고, 차량 시스템에서 gStreamer 파이프라인을 설정할 수 있도록 하여 구체적인 센서 처리 로직을 연결 시스템으로부터 분리하였습니다. 차량 제어 레이어 추상화를 위한 프로토콜을 설계하여 다양한 종류의 차량에 대응할 수 있도록 했습니다. 프로토콜은 실시간성을 고려하였으며 지연 탐지 메커니즘을 포함하고 있습니다.

컨테이너 이미지 의존성 관리 도구

GoLang OCI Personal Pinned mee6aas/clade

본 프로젝트는 회사에서 사용하는 여러 개발환경의 최신 상태 유지를 자동화하기 위해 개인 시간에 진행되었습니다. 사용자가 작성한 이미지의 의존성 정보를 파싱하여 의존성 그래프를 만들고, 베이스 이미지가 원격 이미지 저장소의 해시와 비교하여 최신 상태가 아닌 이미지의 목록을 보여줍니다. 빌드하고 싶은 이미지의 레퍼런스를 입력하면 필요한 정보를 가져와 빌드 커맨드를 작성해 줍니다.

C++ Qt PCL Work
참고로, 저는 본 프로젝트에서 어떠한 캘리브레이션 알고리즘도 구현하지 않았습니다.

본 프로젝트는 차량에 장착된 다양한 종류의 센서로부터 취득된 데이터로 각 센서의 상대적 자세를 추정하는 것이 목표입니다. 저는 다양한 종류의 센서 데이터를 처리하기 위한 공통 장치 인터페이스를 설계하고 센서의 데이터가 알고리즘 실행단계까지 실시간으로 전달될 수 있는 파이프라인을 개발하였습니다.

2021

코드 인터뷰 관리 시스템

TypeScript GoLang Redis Docker PostgreSQL Kubernetes Helm gRPC React Vite Personal Pinned

본 프로젝트는 회사에서 코드 인터뷰 수요가 증가함에 따라 이를 효과적으로 관리하기 위해 개인 시간에 진행되었습니다. Bifrost는 면접관과 지원자를 위한 두 개의 SPA로 구성되어 있습니다. 또한 인터뷰의 진행 상태를 알려주는 메일링 시스템이 구현되어 있으며, 지원자는 자신의 코드를 웹페이지로 제출하여 결과를 실시간으로 확인할 수 있습니다.

...read more

고정밀 3D 지도 제작

C++ PostgreSQL PCL Work
참고로, 저는 본 프로젝트에서 어떠한 SLAM 알고리즘도 구현하지 않았습니다.

본 프로젝트는 라이다 데이터로부터 3D 고정밀 지도를 제작하는 프레임워크를 구현하는 것이 목표입니다. 저는 지도 제작에 사용되는 여러 모듈을 여러 머신에 분산해서 실행하고 취합된 정보에 접근할 수 있는 인터페이스를 제공하는 프레임워크를 구현하였습니다.

...read more

Ansible ROS PTP Work

자율주행 시스템의 부하를 분산하고 안정성을 높이기 위해 분산 컴퓨팅 시스템을 설계하게 되었습니다. 비용 최적화와 장비의 수급을 고려하여 하나의 고성능 네트워크 스위치를 사용하는 대신 목적에 맞는 성능을 가진 다수의 네트워크 스위치를 사용했습니다. 네트워크 스위치를 스택하는 대신 안정성을 위해 센서 종류에 따라 네트워크를 격리했고, 컴퓨팅 유닛은 두 개 이상의 NIC를 사용하여 여러 네트워크에 연결됩니다. 필요한 경우 네트워크 인터페이스 본딩을 이용하여 성능 요구사항을 충족시켰습니다. 설치 편의를 위해 Ansible을 이용하였고 설치 시 인터넷 접근 비용을 줄이기 위해 하나의 컴퓨터를 프록시로 사용하여 필요한 데이터를 캐싱하였습니다. 현장에서 디버그 및 빌드를 하게 되는 경우를 위해 모든 컴퓨팅 유닛이 접근할 수 있는 네트워크 파일 시스템도 구성하였습니다. 센서를 포함한 모든 네트워크 장치의 시간 동기화를 위해 PTP를 사용했습니다.

2020

TypeScript Node.js Express ROS Work

인천국제공항에 도입된 Air-Ride의 승객 서비스 상태를 관리하는 모듈입니다. HMI의 상호작용으로 인한 상태 전이가 올바른 것인지 판단하여 승객 서비스가 예상되는 시나리오 내에서 동작하도록 보조하기 위해 개발되었습니다. 또한 주기적으로 차량의 상태를 공항 관제센터에 전송하기 때문에 관리자의 개입이 필요한 상태인 경우 관제센터에서 즉각적으로 알 수 있습니다. 개발하면서 작성된 상태 머신 다이어그램은 인천공항 프로젝트에서 기술하는 모든 상태를 나타내기 때문에 프로젝트 내에서의 의사소통에 큰 도움이 되었습니다. 차량 내 많은 모듈들이 승객 서비스 상태에 의존적이어서 다른 모듈의 기능 테스트에도 많이 사용됨에 따라 특정 시나리오를 재현하는 기능도 구현되었습니다.

C++ Work

차량에 장착된 다수의 라이다 포인트 클라우드 조각을 모아 하나의 큰 포인트 클라우드로 병합하는 모듈입니다. 라이다의 회전속도를 실시간으로 추정해서, 일부 라이다의 입력 지연이 있더라도 프레임 간 겹침을 최소화하고 거의 일정한 출력 주기를 가집니다. 차량의 자세 정보가 이용할 수 있는 경우 이동속도에 의해 발생하는 왜곡을 보정할 수 있습니다. 성능을 위해 입력 라이다 개별 스레드에서 처리되지만, 실시간 병합 결과는 동일한 메모리 공간에 작성됩니다. 공유 메모리에 대한 contention을 최소화하기 위해 버퍼를 작은 세그먼트로 나눠 필요에 따라 라이다 처리 스레드에 분배하였으며 lock-free로 구현되었습니다.

C++ SIMD Work Pinned

라이다 Parser는 라이다 패킷으로부터 포인트 클라우드를 만드는 것이 목적입니다. 라이다 제조사에서 라이브러리를 제공하지만, 커스텀 기능이 필요했고 해당 기능이 패킷 파싱 과정에 통합되면 zero-cost로 구현될 수 있기 때문에 드라이버를 직접 구현하게 되었습니다. 또한 공식 라이브러리가 패킷 파싱뿐만 아니라 네트워크 스택까지 통합되어 있었고 라이다 모델별로 패킷 구조가 다르기 때문에 사용하기가 불편했습니다. 제가 구현한 라이브러리는 패킷 정보에 접근하는 통일 인터페이스를 제공하며 공식 라이브러리보다 3배 정도 좋은 성능을 보여줍니다.

...read more
2019

커넥티드카 모빌리티 실시간 서비스를 위한 엣지 클라우드 플랫폼 개발

C C++ C# GoLang Java Android Docker .NET Pinned

연구실에서 진행한 IITP 연구과제로, 스마트폰을 엣지 노드로 사용해서 작업지연시간을 줄이는 것이 목표입니다. 제 역할은 RSU를 이용한 결함포용 작업처리 모델을 설계하고 데이터 제너레이터, OBU, MEU, 클라우드간 통신 인터페이스를 구현하는 것이었습니다.

...read more

워크플로 인지 저지연 서버리스 플랫폼

GoLang TypeScript Node.js Docker gRPC Pinned Awarded Published mee6aas/zeep

연구목적으로 개발한 서버리스 플랫폼으로, 목표하는 바는 서버리스 환경에서 실행되는 워크플로에서 함수 간 메시지 전달 비용과 데이터 의존성이 발생할 때 외부 스토리지에 접근하는 비용을 최소화하는 것입니다. 본 프로젝트와 관련한 두 개의 논문을 각각 IEEE MASS 2019ICICPE 2019에 개재했습니다. 또한 연구실에서 수행하는 IITP 연구 과제에 활용되었습니다.

...read more
2017

졸업작품

C++ OpenCV Pinned Published lesomnus/senior-project

멀티미디어 신호 처리 연구실에서 공부한 내용을 바탕으로 졸업작품을 구상하던 중 아이디어가 괜찮다고 생각되어 특허를 출원하게 되었습니다. 빔프로젝터의 빔으로부터 발표자의 시력을 보호하는 방법에 관한 내용입니다. 아이디어를 요약하자면, 빔프로젝터의 영사 영역 방향으로 카메라를 연결해서 입력 영상으로부터 배경과 발표자를 분리하고, 영사될 영상에 발표자 영역을 마스크하여 발표자의 시력이 보호되는 것입니다.

...read more
2016

제 14회 임베디드 소프트웨어 경진대회

Node.js JavaScript Tizen MongoDB Express Bluetooth Pinned Awarded

본 공모전의 목표는 스마트 워치에서 애플리케이션을 개발하는 것입니다. 저희 팀은 사용자가 요리하면서 손을 사용하지 않고 제스처를 이용해 요리 레시피를 볼 수 있는 요리 보조 애플리케이션을 개발했습니다. 또한 스마트 워치와 화면이 동기화되는 스마트폰 애플리케이션도 구현하였습니다. 제 역할은 레시피를 응답해 주는 간단한 서버와 스마트 워치 애플리케이션의 UI 구현이었습니다. 그리고 두 애플리케이션 사이의 화면을 동기화하기 위한 메시지 및 동기화 프로토콜을 정의하였습니다.

...read more

데이터 통신 및 실습 강의 설계 프로젝트

C++ MFC Pinned

본 프로젝트는 Point to Point Protocol(PPP)과 이를 사용한 1:1 채팅 프로그램을 구현하는 것이 목표입니다. PPP는 Segmentation & Reassembly, Checksum, Multi-thread, Ring Buffer, Sliding Window Flow Control & Error Control, 그리고 Byte Stuffing 기능을 포함해야 합니다. 저는 이 수업에서 Go-Back-NPiggyback을 이용한 Bidirectional Full-Duplex 통신을 구현한 유일한 수강생으로, 최고점을 받았습니다.

...read more

운영체제 강의 설계 프로젝트

C Pintos Pinned

본 프로젝트는 Stanford University에서 개발된 교육용 운영체제인 PintosAlarm-priority Test를 통과하기 위해 O(1) Scheduler를 구현하는 것이 목표입니다. 저는 이 수업에서 해당 테스트를 통과한 유일한 수강생으로, 최고점을 받았습니다.

...read more
2015

제 13회 임베디드 소프트웨어 경진대회 LG전자 부문

webOS Node.js JavaScript Express Pinned

본 공모전의 목표는 webOS가 탑재된 스마트 TV에서 애플리케이션을 개발하는 것입니다. 저희 팀은 스마트 TV를 공용 테이블로 사용하고, 플레이어 각자의 스마트폰으로 개인 패를 받아 게임을 진행할 수 있는 카드 게임을 개발했습니다. 제 역할은 서버에서 게임의 상태를 관리하고 클라이언트에 게임의 상태를 실시간으로 전송하여 클라이언트의 UI 상태를 업데이트하는 것이었습니다. 별도의 디자인 프레임워크를 사용하지 않고 반응형 웹을 구현하였습니다.

...read more