인턴 회고록: 한국철도기술연구원에서의 3개월

YONGJUN·2025년 4월 29일
6

회고록

목록 보기
2/2
post-thumbnail

대학교 1학년을 마친 뒤 휴학을 결정하며, 좋은 기회가 되어 한국철도기술연구원에서 약 3개월간 인턴으로 근무했던 경험을 작성하고자 한다. 비록 짧은 기간이었지만 그동안 경험하고 배운 것, 그리고 깨달은 점을 중심으로 회고록을 남기고자 한다.

한국철도기술연구원이란?

과학기술정보통신부 산하에서 철도, 대중교통, 물류 등 공공교통 분야의
연구개발 및 성과확산을 목표로 하는 정부출연 연구기관이다.

미래교통물류연구소 철도정책연구실 소속으로 대중교통 최적 경로 탐색 알고리즘, 데이터 시각화, 플랫폼 구축과 관련된 연구 업무를 진행했다.

연구원 내 직급은 '일용계약직'이지만 고용보험법상 기간제 근로자 형태의 계약이므로 이해를 돕기 위해 '인턴'이라는 용어를 사용하고자 한다.

인턴을 하게 된 계기

2024년 겨울, 원래는 공군을 준비하려고도 했고, 병역에 대한 여러 고민을 했지만 최종적으로 육군을 선택해 1학년을 마치고 휴학할 계획이었다.

그 무렵, 동아리 기장 선배님이 군대 가기 전 인턴 형식으로 실무 경험을 쌓을 수 있는 기회가 있다고 하시며 인턴십 소식을 건네주셨다. 휴학 기간이 긴 만큼 알차게 보내려고 마음먹었기에 주저 없이 기회를 잡기로 했다. 과는 다르지만 평소 친분이 있고 관심 분야가 같았던 동기와 함께 지원하기로 했다.

대단한 포트폴리오가 있었던 것은 아니었지만 1학년 동안 틈틈이 개발한 프로젝트들을 정리해 이력서를 작성했다. 1학년이 인턴을 한다는 것 자체가 흔치 않은 일이고 두렵기도 한 건 사실이었다. 그래도 내가 앞으로 나아갈 IT 업계 특성상 실력뿐만 아니라 다양한 실무 경험과 포트폴리오가 중요하다고 생각해 망설임 없이 준비를 했다. 이번 기회가 비록 어렵고 도전적일지라도, 빠르게 성장할 수 있는 귀중한 발판이 될 것이라 믿었다.

그렇게 총 4페이지 분량의 이력서를 작성했다. 작성하면서도 내가 참여한 프로젝트에서 어떤 기술을 사용했는지, 그 과정에서 내가 어떤 역할을 했는지 명확히 정리하는 것이 어려웠다. 처음으로 제대로 된 이력서를 작성해보는 과정이었기에 내 경험을 어떻게 효과적으로 표현해야 할지 많은 고민이 되었다.

이력서 작성을 마치고 나니, 지금까지의 선택들이 모두 의미 있는 경험으로 쌓여가고 있다는 생각이 들었다.

특히 공군 대신 육군, 학교 대신 인턴 근무라는 쉽지 않은 결정을 내린 만큼 이 기회를 성장의 발판으로 삼겠다는 의지도 더욱 확고해지게 되었다.

교수님과의 미팅과 다짐

연구원에 채용되려면 근무 전에 연구원에 추천해주실 교수님과의 미팅 절차가 필요했다.

현재 재학 중인 AI·소프트웨어학부 소속 교수님을 찾아뵙고 대화를 나누었다. 수업을 여러 번 들은 터라 편안한 분위기로 진행할 수 있었다. 준비했던 이력서를 토대로 교수님과 약식 면접을 진행했는데, 이력서에 기재된 프로젝트 경험에 대해 질문하셨다. "이 프로젝트에서 어떤 역할을 수행했는지?", "개발 과정에서 어떤 어려움에 직면했고, 그 문제를 어떻게 해결했는지?" 와 같은 질문을 통해 내가 프로젝트에 얼마나 깊이 참여했고, 문제 해결 능력은 어느 정도인지 확인하셨다. 그동안 진행했던 프로젝트들을 상세히 설명드리며 내가 수행했던 역할과 겪었던 문제점, 그리고 이를 극복하기 위해 어떤 노력을 기울였는지 답변했다.

그때 당시 아직 학부 1학년을 마친 것도 아니었고 나이도 어려 교수님은 내가 전문 연구기관 환경에 잘 적응하고 업무를 제대로 수행할 수 있을지 많이 염려하셨다. 그래서인지 연구원에 대한 전반적인 설명과 함께 회사 생활은 어떤지, 어떤 마음가짐이 중요한지에 대한 말씀을 많이 해주셨다. 특히 책임감에 대한 진심 어린 당부를 여러 번 강조하셨다.

이때부터 마음가짐을 더 확고히 하게 됐다. 내 근무 태도 및 능력과 개발 역량에 따라 우리 학과와 학교, 나아가 교수님의 이미지까지 달라질 수 있다는 사실을 몸소 깨달았기 때문이다. 교수님의 따뜻한 격려와 진심 어린 조언을 통해 반드시 좋은 결과를 만들어내야겠다는 의지를 다지게 되었다.

미팅 후 교수님이 연구원 측에 이력서를 전달해 주셨고, 연구원 내 약식 면접(미팅) 등의 절차를 거쳐 동기와 함께 최종 채용됐다.

나에게 주어진 업무

설 연휴가 끝난 2월 3일, 드디어 첫 출근을 했다. 연구실에 도착하니 함께 일할 박사님들께서 반갑게 맞아주셨고, 회의실로 이동해 현재 진행 중이거나 앞으로 진행할 연구 과제들을 상세히 소개해 주셨다. 이어서 앞으로 내가 어떤 과제를 수행하게 될지 논의하기 위해, 준비해 간 이력서를 바탕으로 간단한 포트폴리오 발표를 진행했다. 박사님들께서 편안한 분위기를 만들어주신 덕분에 긴장하지 않고 발표를 잘 마칠 수 있었고, 연구실 분위기나 복장, 규율 등 전반적인 사내 문화도 자유롭고 합리적이어서 마음에 들었다.

그렇게 긍정적인 첫인상 속에서 간단한 채용 절차가 마무리되고, 본격적인 업무가 시작되었다. 한국철도기술연구원의 '철도산업 디지털 및 친환경 분야 핵심기술 개발' 연구 과제의 일환으로 참여하였고, 데이터 분석 및 개발 업무를 담당하게 되었다.

처음 접해보는 분야..

1학년 전공 수업에서 기본적인 알고리즘만 배웠던 터라, 심도 있는 알고리즘이나 대중교통·철도 분야의 전문 기술은 생소해서 어려움을 느꼈다. 게다가 교통 분야의 다양한 학술 논문은 물론, 해외 학술지 영어 논문까지 찾아 읽고 공부해야 했다.

"아직 1학년이니까 모르는게 당연하다." 라는 핑계 속에 숨지 않기 위해, 동기와 함께 1~2주간 정말 열심히 공부하고 60페이지 분량의 PPT로 정리했다.

인턴십을 시작하기 전에 스스로 다짐했던 것처럼, 현재 내 실력보다 훨씬 더 많은 노력을 쏟아야겠다고 생각했다. 단순히 결과물을 만들어내는 것뿐만 아니라, 업무에 임하는 열정과 적극적인 태도 또한 중요한 부분이라고 여겼다. 그렇게 처음 정리한 PPT 자료를 들고 박사님들과의 첫 미팅을 갖게 되었다.

첫 미팅 이후에도 매주 정기적으로 피드백 시간을 가지며, 내가 잘했던 점과 개선해야 할 부분을 짚어주셨고, 그 피드백을 바탕으로 꾸준히 주어진 연구 과제들을 해결해나갔다. 이러한 과정을 통해 전문적인 업무 능력뿐만 아니라, 스스로 성장하고 있다는 느낌을 받았다.

경험하고 배운 것들

업무 수행에서의 어려움

자세한 내용은 언급할 수 없지만 내가 맡은 업무는 기존 솔루션 검증, 자체 알고리즘 개발, 알고리즘 최적화, 플랫폼 구축, 데이터 시각화 등이었다. 전반적인 흐름을 검증하고 개발하는 과정에서 많은 도전과 성장이 있었다.

기존 경로 탐색 알고리즘의 한계점을 분석하면서 한계점을 보완한 알고리즘을 구현한 여러 오픈소스와 기존 솔루션들을 검토해 본 결과, 대부분이 해외 교통 시스템에 맞게 설계되어 있어 한국의 대중교통 데이터와 호환되지 않거나 너무 복잡한 문제가 있었다.

이러한 문제를 해결하기 위해 박사님들과 함께 한국의 대중교통 데이터 형식에 맞게 자체 알고리즘을 개발하기로 결정했다. 이 과정에서 레퍼런스나 오픈소스의 코드를 참고하며 개발했다.

끝없는 최적화 과정

  • 초기 접근 방식과 한계: 처음에는 간단히 기본 사항만 구현된 오픈소스를 토대로 기본적인 데이터 구조와 반복문 위주로 접근했다. 하지만 수도권 전체 정류장과 방대한 대중교통 데이터 처리 시 성능 저하가 심각했다. 특히 수많은 정류장과 트립 데이터를 실시간으로 연산하는 과정에서 병목 현상이 발생하여, 대용량 데이터를 효율적으로 처리하기 위한 데이터 구조와 알고리즘 개선이 필수적이었다.

  • 희소(Sparse) 데이터 구조 도입 및 K-Label 관리: 해당 알고리즘은 라운드별로 각 정류장의 도착 시간 정보를 관리해야 한다. 초기에는 단순한 NumPy 배열을 고려했으나, 대부분의 정류장이 특정 라운드에 도달 불가능(무한대 값)하여 메모리 낭비가 문제였다. 이를 해결하기 위해, 각 라운드에서 실제 도달 가능한 정류장의 정보만을 List[Dict[str, List[Label]]] 형태로 저장하는 Sparse 구조를 채택했다.
    Label은 (도착 시간, 노선 시퀀스, 이전 경로 정보) 튜플로, 필요한 데이터만 효율적으로 저장 및 접근하여 메모리 사용량을 크게 줄이고 연산 속도를 높였다.

  • 대규모 데이터 연산 및 관리: 방대한 대중교통 데이터를 효율적으로 처리하기 위해, 초기화 단계에서 필요한 정보를 미리 연산하여 최적화된 구조로 저장했다. 정류장 ID와 내부 인덱스 간 매핑을 생성하고, 회차 상세 정보와 정류장별 출발 시간 정보를 구축했다.
    특히 각 정류장에서 출발하는 회차 ID, 출발 시간, 정류장 순서를 NumPy 배열 형태로 저장하고 출발 시간 기준으로 미리 정렬해 두었다. 이를 통해 특정 정류장에서 특정 시간 이후 출발하는 트립을 이진 탐색을 이용해 O(log N) 시간 복잡도로 빠르게 조회할 수 있게 하여, 라운드별 탐색 성능을 크게 향상시켰다.

  • 공간 연산 최적화 (Spatial Index 및 KD-Tree): 도보 이동 계산 시, 모든 정류장 간의 거리를 계산하는 것은 비효율적인데, 이를 최적화하기 위해 GeoPandas의 공간 인덱스(sindex, R-tree 기반)를 활용하고 특정 정류장 주변의 일정 반경 내 인접 정류장만을 빠르게 필터링하여 불필요한 거리 계산을 최소화했다. 계산된 도보 경로는 메모리에 캐싱하여 반복 계산을 피했다.
    또한, 사용자가 입력한 출발/도착지 정보에서 가장 가까운 정류장을 찾는 과정에서 scikit-learn의 KDTree 구현체를 활용하여 2차원 좌표 상의 정류장 데이터를 인덱싱하고, 주어진 좌표에서 가장 가까운 정류장들을 빠르게 검색함으로써 공간 연산 부하를 크게 줄일 수 있었다.

  • 성과와 성장: 이러한 희소 데이터 구조, 사전 연산, 공간 인덱싱 등 다양한 최적화 기법들을 통해 기본 사항만 구현된 초기 버전 대비 성능을 크게 개선하여, 수도권 도시철도 데이터 대상 경로 탐색 시간을 약 30초에서 평균 0.6초 수준까지 단축하는 성과를 달성했다. 이 과정에서 단순히 알고리즘을 구현하는 것을 넘어, 어떻게 최적화하고 어떤 자료구조를 사용할지 선택하는 등 병목 지점을 찾아 개선하는 경험을 할 수 있었다.
    또한 해당 알고리즘을 기반으로 시각화 플랫폼을 구축하여 실제 정책 전문가나 사용자들이 직관적으로 결과를 확인하고 활용할 수 있도록 했다. 이런 과정속에서 매주 진행된 박사님들과의 미팅에서는 주어진 문제와 해결 과정, 의사결정 이유를 논리적으로 설명하는 능력이 중요했다. 특히 기술적인 부분에서 내가 수행한 해결 방안을 명확히 전달하는 과정, 협업 과정이 매주 있었기에 커뮤니케이션 스킬도 향상시킬 수 있었다.

(주말엔 틈틈히 사이드 프로젝트도 하면서 3개월간 약 150개의 커밋을 했다.)

기술 스택 확장과 실무 경험

이번 기회를 통해 기존에 주로 해왔던 프론트엔드 개발 분야를 넘어 다양한 기술을 경험할 수 있었다. 특히 알고리즘 설계 및 구현 방법론을 박사님들과의 협업 과정에서 배웠고 AWS 서버 및 데이터베이스 구축, API 설계, Docker 활용, CI/CD 파이프라인 구축 등 이전에는 접해보지 못했던 기술들을 직접 적용해볼 수 있었다.

1. 인프라 마이그레이션

  • 로컬 환경 → AWS EC2: 초기 개발 단계에서 즉각적 피드백을 위해 로컬 서버를 사용했으나, 실제 운영 환경 구축을 위해 클라우드 환경으로 마이그레이션하는 작업을 거쳤다.
  • Docker 컨테이너 도입: 배포 환경 관리와 재배포 편의성을 위해 Docker를 적극 도입하여 서버 환경을 통일하고 배포 속도와 안정성을 높였다.

2. 배포 자동화

  • CI/CD 파이프라인 구축: GitHub Actions를 활용해 자동으로 Docker 이미지 빌드, EC2 배포까지 이루어지는 프로세스를 구축했다. 이 과정에서 배포 속도는 물론이고 코드 관리도 수월해졌다.

3. 백엔드 프레임워크 전환

  • Flask → FastAPI: 초기 개발과 프로토타입 제작에는 유용했지만, 점점 프로젝트가 복잡해지고 비동기 처리 및 성능 개선이 필요해지면서 마이그레이션을 진행했다. 비동기 처리 지원, 타입 힌트를 통한 명확한 코드 작성 가능한 이점을 얻었다.

4. 프론트엔드 기술 스택 전환

  • 바닐라 JS/HTML/CSS → Next.js(React): 빠른 개발과 즉각적 피드백을 위한 단순 기술 스택을 사용했는데, 프로젝트가 점점 복잡해지고, 장기적 유지보수, 사용자 경험을 고민하면서 마이그레이션을 진행하기로 결정했다.
    그러나 기본적인 기능만 구현하고 Vercel를 통해 배포까지 한 상태지만 짧은 인턴 기간 내에 완전히 마이그레이션을 마치지 못한 채로 종료하게 되어 개인적으로는 다소 아쉬움이 남는다. 결국은 바닐라 JS로 완성을 했지만 그래도 최신 프론트엔드 기술에 대해 지속적으로 관심을 갖고 시도해보았다는 점에서 의미 있는 경험이었다고 생각한다.

이러한 마이그레이션 경험들을 통해 단순히 기술을 적용하는 것뿐 아니라, 각 기술과 플랫폼의 특징과 제한 사항을 이해하고 이에 따라 적절히 판단하고 설계하는 역량까지 키울 수 있었다. 처음 접해보는 기술을 실제 문제에 맞게 적용하고 때로는 시행착오를 겪으며 더 나은 해결책을 찾아가는 과정이야말로 이번 인턴십에서 얻은 가장 의미 있는 경험이었다고 생각한다.

다양한 시각과 방향

미팅 및 협업 과정에서 정말 다양한 시각을 배울 수 있었다. 특히 자료를 분석하고 결과를 도출할 때 내가 가지고 있는 시야가 좁다는 것을 깨달았다.

미팅에서의 발표 내용을 박사님들께서 검토해주시고, 지금의 단계에서 더 발전시킬 수 있는 다양한 대안을 제시해 주시는 모습을 보며 깊은 인상을 받았다.

주어진 문제 상황에 따른 솔루션, 내가 수행한 것을 더 나은 방향으로 이끄는 방안을 논리적으로 제시해주셨고 이와 같은 피드백에 담긴 다양한 시각과 방향이라는 발판이 있었기에 업무가 수월하게 진행됬다.

또한 정부기관이나 여러 기업들과의 협업 과정에서 학생으로서는 쉽게 접할 수 없는 자료와 정보들을 볼 수 있는 기회가 있었다. 이러한 실무 경험은 앞으로 나의 시야를 넓혀 줄 밑거름이 되리라 생각한다.

연구 직종에 대한 관심과 진로

운이 좋게 기간이 맞아 한국철도학회에서 주관하는 2025 학생 철도 창의 작품전과 연구원에서 주관하는 아이디어 공모전에 참여했다.

그동안 수행했던 내용을 바탕으로 박사님들의 첨삭 지원을 받았고, 한단계 발전시켜 다양한 분석 자료와 산출물을 도출했다. 2주간의 노력 끝에 '대중교통 경로 탐색 알고리즘 기반 접근성 분석 플랫폼' 이라는 주제로 학회에 제출했다.

이 과정에서 연구 직종에 대한 큰 흥미가 생겼고, 정부출연 연구기관이 정말 가치 있는 기관이라는 것을 알게 되었다.

특히 철도정책연구실에서 근무하면서 철도 및 대중교통 정책, 데이터를 기반으로 한 솔루션과 소프트웨어 기술이 합쳐져 실제 국가 인프라와 시스템에 적용하여 사회적 가치를 창출할 수 있음을 경험했다. 이를 계기로 앞으로의 진로에 대한 시야가 넓어졌고 단순히 플랫폼을 개발하는 프론트엔드 개발자를 넘어 다양한 시각을 가진 개발자가 되어야겠다고 생각했다.

성취감과 인정

3개월간 업무를 수행하고 다양한 공모전을 준비했던 과정에서 가장 보람찼던 순간은 내가 구축한 플랫폼과 분석 내용이 실제로 여러 미팅과 협업 과정, 연구 보고서에서 활용되고 있다는 것을 알게 되었을 때였다. 또한 함께 근무한 박사님들로부터 “1학년 학생이라고 믿기 어려울 정도로 훌륭한 성과” 등 여러 칭찬을 들으며 큰 성취감을 느꼈다. 좋은 환경에서 뛰어난 박사님분들과 함께 근무했기에 좋은 성과를 낼 수 있었고 자신감을 가질 수 있었다.

그동안 성실히 근무한 결과, 함께 근무했던 박사님께서 링크드인 추천서도 써주셨다.
처음 인턴을 시작했을 때는 경험을 쌓는 것에 초점을 맞추었지만, 실제로 연구원의 중요한 프로젝트에 기여하고 의미 있는 결과물을 만들어내면서 스스로 성장했음을 느낄 수 있었다. 특히 초기에는 도전적으로 느껴졌던 기술적 문제들을 하나씩 해결해 완성하는 과정을 돌아볼 때는 열심히 노력했던 모습을 확인할 수 있었다.

퇴사를 앞둔 마지막 시기에는 아쉬움과 함께 뿌듯함을 느꼈다. 짧은 기간이었지만 연구원과 국가 R&D에 실질적인 가치를 더할 수 있었고, 그에 따른 인정을 받으며 마무리할 수 있어 더욱 의미 있는 경험이었다.

마치며

한국철도기술연구원에서의 3개월간의 인턴 경험은 짧은 기간이었지만, 큰 성장과 변화의 시간이었다. 대학 1학년을 갓 마친 상태에서 전문 연구기관에서 일한다는 것이 처음에는 두렵기도 했지만, 끊임없는 학습과 도전을 통해 자신감을 얻게 되었다.

3개월간 전문 연구기관에서 보낸 시간은 실제 연구 과정을 생생하게 경험할 수 있는 소중한 기회였다. 교통 데이터를 직접 다루고, 다양한 기관과의 협업 과정, 자료들을 경험하면서 학교에서는 접하기 어려운 실무 환경을 수행할 수 있었다.

이렇게 경험하고 배운 실무 지식과 협업 경험은 앞으로의 학업과 진로에 든든한 토대가 될 것 같다. 앞으로의 진로 선택에 있어 더 넓은 시야를 가지고 더 다양한 분야의 개발을 목표로 하고싶다.

마지막으로, 이 값진 기회를 제공해 주신 학부 교수님과 동아리 기장 선배님, 그리고 함께 고민하고 노력했던 동기, 특히 단순한 지도뿐만 아니라 실무적인 조언과 다양한 경험을 아낌없이 공유해 주신 박사님들께 진심으로 감사의 마음을 전하며 이 회고를 마친다. 비록 짧은 인턴 기간이었지만, 내가 겪은 경험은 나의 대학 생활과 앞으로의 도전에도 잊지 못할 경험으로 남을 것이다.

본 회고록의 내용은 연구원측의 허용 범위 내에서 작성되었으며, 만약 내용 중 문제되는 부분이 생긴다면 즉시 수정하겠습니다. 읽어주셔서 감사합니다!

profile
모바일 크로스 플랫폼 개발, Flutter에 관심이 많습니다.

0개의 댓글