FLEXIBLE ENGINEER


BAEK JUNG HO

나의 Wiki 메인페이지 제목은 FLEXIBLE ENGINEER 이다. FLEXIBLE(유연한) 이라는 단어를 나는 다음과 같이 정의하고 있다. 환경에 구애 받지 않고 자신의 가치를 증명할 수 있는 것이라 생각한다. 이것이 나의 가치관(value) 이며 등대(lighthouse) 역할을 하고 있다.

(2024-08-25 기준) 개발자를 시작한지 만으로 5년이 되어간다. 개발자로서의 발자취(footprints) 를 돌이켜보면 운이 좋게도 가치관을 잘 지키고 있다.

내가 겪은 환경은 다음과 같다.

  • Mayeye - SI / Agency 경력 2년 2개월
  • TableManager - Series B Startup 경력 6개월
  • 42dot - Hyundai Motor Group 경력 2년

국비지원 학원을 나와서 스프링도 배우지 않고 조기 입사를 한, 첫 회사의 시작 연봉이 최저임금수준 이었다. 회사를 나오는 시점에는 약 2배 정도 올리고 나왔다. 첫 해에는 연봉협상을 무려 2번이나 했다. 이렇게 할 수 있었던 배경은 '잘하고 싶은 마음' 이 컸고, '인복' 이 있었으며, '노력' 을 정말 많이 했다. 남들보다 한 시간 일찍 출근해서 항상 책을 봤다. 대표님께서 그 부분을 되게 좋게 봐주셨었다. 주로 했던 업무는 대학교 홈페이지 구축이었고, 만 1년차때 기획자인 부장님과 함께 대전 소상공인진흥공단으로 파견을 나가서 '소상공인 임차인 확인서 발급 시스템' 을 구축하였다. (이 프로젝트는 개발자 인생에서 가장 애정하는 프로젝트 중 하나이다.)

공단에 혼자서 파견 나가있으니 외롭기도하고, 혼자서 구현해야 하다보니 책임감이 너무 무거웠다. 이때는 정말 '책임감' 하나로 일했던 것 같다. 프로젝트가 성공적으로 잘 끝나서 회사가 공단에서 다른 프로젝트도 수주 받을 수 있게 되었다. 이 기점으로 개발에 대한 자신감이 많이 올라갔다.

사실 첫 회사랑은 인연이 깊다. 대학생 시절 현장 실습을 나갔던 회사가 첫 회사였고, 그때 한 달간 성실히 일하던 모습을 대표님께서 좋게 봐주셔서 조기 취업도 가능했다. 첫 회사에서 높은 퍼포먼스를 지속적으로 냈다는 점 이 자신감을 많이 심어줬다. 이 시점에 내가 개발적으로 가장 관심이 있었던 Category 는 다음과 같다.

내일채움공제가 끝나고 더 새로운 환경과 큰 물에서 놀고 싶다는 생각이 컸다. 그렇게 모은돈 3천만원을 가지고 서울로 상경했다. 서울 올라와서 내가 처음 한 일은 Algorithms & Computer Sciences 준비를 위한 스터디원 모집이었다.

서울로 상경하고 42dot 에서 입사하고 얼마 지나지 않아, 대전에 있는 첫 회사로 놀러갔다. 여전히 반갑게 맞아주시는 사장님, 이사님들, 차장님을 뵙고 느낀점이 정말 인복이 많구나, 운이 좋았구나 라는 생각을 많이 하게 되었다.

그리고 첫 상경 후 직접 모은 스터디원 분들도 아직까지 만나고 있으며 다들 너무 좋으신 분들이라 다시 한번 운이 좋았구나 라는 생각을 많이하게 되었다.

두 번째 회사는 Series B Startup 이었는데, 내가 더 큰 환경에 나가기 위해서 무엇이 부족한지를 깨닫게 해주는 회사였다. 'O2O 픽업 주문 서비스 개발' 및 '결제 서비스 유지보수', 'KT 통화비서 개발' 관련 업무를 진행했다.

이 회사에서는 이전에 배우지 않은 언어(Kotlin, Typescript)지만 곧바로 기술 문서를 보고 익혀서 실무에 적용할 수 있는 능력이 있구나 라는 것을 깨닫게 해준 회사였다. 스타트업을 다니면서 가장 좋았던 점은 기술에 구애받지 않고 업무를 할 수 있는 유연함 을 경험해봤다는 것이다. 이때 내가 관심이 있던 Category 는 다음과 같았다.

이때에도 나의 Wiki 는 꾸준히 쓰고 있었다. 그리고 이 시점에 LinkedIn 을 가입하게 된다. LinkedIn 을 통해서 42dot 채용 담당자 분께 면접 제의를 받았고, 그렇게 3번의 면접을 통해 42dot 으로 입사하게 되었다. LinkedIn 에는 짧은 소개와 나의 Wiki 링크 뿐이었지만, Wiki 가 나의 무기이자 강점을 드러내는데 좋은 도구라고 생각했다.

42dot 입사 후 자율 주행 호출 서비스인 TAP! 개발 업무를 담당하였다. 개발자가 갖춰야할 본질인 '문제 해결 능력(problem-solving skills) & 비판적 사고(Critical Thinking)' 역량을 충분히 발휘하여 성과를 냈던 경험을 소개하고자 한다. 나의 Role 은 Autonomous Ride-Hailing Service - Console API Designs for Driver 였지만, 배차(Dispatch) 업무에 큰 성과를 기여했다.

청계천 자율주행 버스, 동시 배차 요청으로 인한 에러률 0% 달성

배경

  • 2022년 11월 15일 42dot 에서 청계광장-세운상가를 순환하는 자율주행 전용 버스를 선보일 예정이었다.
  • 서비스(노선)를 오픈하기 전에 주기적으로 발생하는 동시 배차 요청으로 인한 에러를 해소해야 했다.

문제 정의

  • 동시 배차 요청 시, 첫 번째 요청은 처리가 되지만 두 번째 요청은 에러로 인해 배차 처리가 되지 않는다.
  • Concurrency 를 해결하기 위해, 공유 자원(shared resource)인 운행 중인 차량 Id 에 대해서 Distributed Lock 이 적용되어 있었다. 하지만 락이 점유 중이라면 Exception 을 발생시켜 문제가 되었다.

해결 과정

  1. 동시성 이슈 해결을 위해 Lock 을 사용하는 것이 타당한지를 검토
    • Database 의 격리 수준을 Serializable Read 로 올리면 안되나? 격리 수준을 올리면 데이터의 무결성을 유지할 순 있지만, 성능 저하가 있음.
  2. 1번에 대한 타당성 검토 후 재시도 락(tryLock)을 사용하는 것이 변경 사항이 가장 적고 효율적인 해결책이라 판단
    • 타당한 근거 - 운행 시간표 & 회차 수 및 차량에 탑승할 수 있는 최대 인원수, 한 바퀴 도는데 걸리는 시간 및 차량을 탑승하기 위해 승객들이 몇 분까지 대기할 것인지 등 고려했을때 트래픽이 많지 않음. 예상되는 서비스 확장성 등을 생각했을 때 오버엔지니어링 할 필요가 없다고 판단.
  3. TryLock 을 적용하기 위해 최적의 waitTime, leaseTime 값을 설정해야 함
    • [leaseTime] 운영 환경의 1달 로그 데이터를 통해서 Lock 을 사용 중인 모든 API 들 중에서 가장 오래 걸린 Task Duration 을 파악 (4.7s). Task Duration 이 leaseTime 설정에 영향을 주기 때문에 중요함.
    • [waitTime] 배차 요청 외에 공통으로 Lock 을 걸어 사용하고 있던 API for Drivers 들이, 락을 획득하기 위해 얼마나 대기해도 되는지를 검토
  4. Test Code 를 통해서 가설 검증
    • 2번 과정에서 예상되는 트래픽(스레드)과 3번 과정에서 얻은 설정 값이 효과적일지 테스트 코드를 통해서 검증
  5. 모든 문제 해결 과정을 사내 Wiki 에 문서화

상당히 중요했던 '청계천 자율 주행 버스' 노선 오픈에 이슈 없이 서비스를 제공할 수 있게 되어서 많은 자부심이 들었다.

42dot 에 다니면서 Distributed Systems 에 대한 공부를 본격적으로 하게 되었다. Concurrency 에 대한 지식은 기본으로 필요했으며, 내가 그동안 공부했던 내용을 실무에 적용할 수 있는 아주 좋은 기회들이 많았다. 현재는 Connected Service 와 관련된 업무를 하고 있다. Vehicle Control APIType 기반으로 잘 설계 하였다.

팀의 성과를 잘 내기 위해서는 팀원 간의 신뢰가 중요하다고 생각한다. 동료들에게 신뢰를 얻고 좋은 영향을 주기 위해 가장 중요한 덕목은 Transparent 라고 생각한다. 나의 강점과 노하우를 아낌 없이 공유하고, 겸손해야 하며, 동료의 도움과 지식 공유에 감사할 줄 알아야 하는 것 같다.

나는 삶을 살아가는데 있어서 아래 4가지 원칙을 가장 중요시 한다. 이는 회사 생활에서도 동일하게 적용된다.

내가 위에서 각 시기마다 어떤 기술에 관심을 가졌는지 적은 이유가 있는데, 42dot 을 다니면서 느낀 점 중 하나가 관심을 갖고 노력한 부분이 강점 이 된다는 것이다. 지금 관심있어하는 기술은 다음과 같다.

42dot 을 다니면서 정말 좋은 부분은 뛰어난 (그룹장님 팀장님을 포함한, 타 팀을 포함한) 동료분들과 같이 일할 수 있다는 것이다. 즉, 동료들의 강점을 나의 것으로 만들 수 있는 환경이 갖춰졌다는게 나에겐 큰 매력으로 다가온다.

지금까지 다양한 형태의 기업을 다니면서 FLEXIBLE(유연함)을 점점 갖추고 있는 것 같아서 뿌듯하다. 위에서 유연함은 나에겐 등대 같다고 표현을 했는데 그 이유는 유연하기 위해서는 내가 잘하는 것보다 부족한 부분 또는 경험해보지 못한 것을 채워나가야 한다고 생각한다. 학습을 하거나 회사를 선택함에 있어 가치관이 등대가 되고 있다.

마지막으로 이 글을 쓴 이유는 (내 wiki 가 누군가에게 발견이 되고) 내가 누군가에게 같이 일하고 싶은 사람으로서 보여진다면 더 많고 다양한 기회가 찾아올 것이라 생각하기 때문에 Branding 목적으로 글을 쓴 것이다.

Contacts