본문 바로가기
생각

신입 개발자의 개발에 대한 생각(문제 해결, 로그)

by 아마도개발자 2024. 1. 2.

 

약 1년 간 제조 기업의 IT부서에서 개발을 하면서, 기술적으로 깊지는 않지만 신입으로서 경험하기 쉽지 않은 다양한 일들을 했다고 생각한다. 처음 부서 배치를 받았을 때 부서원 전체 인원 중 서비스, 시스템을 제대로 구성해본 인력이 많아야 1~2명인 상황이었다. 그리고 나는 `웹`을 배워 봤다는 이유로, Flutter로 새로시작하는 프로젝트가 있는데, `앱`을 만들어 로그인 기능을 구현해보라는 미션을 받았다. 황당했지만 처음에는 어렵지 않았다. Flutter도 생각보다 재밌었고 라인장님도 나에게 딱히 기대를 갖고 일을 맡긴 것이 아니라 아직 할 업무가 없어 단순하게 미션을 준 느낌이었다. 

 

하지만, 로그인 기능을 완성하자(생전 처음보는 c#의 .NET CORE로 백엔드를 구성했다) 처음에는 단순히 로그인 구현이었던 일이 점점 내 파이가 커져 어느새 Flutter로 만든 앱 전체 개발을 내가 진행하고 있게 되었다. 이 프로젝트는 내가 만든  Flutter앱과 Unity로 만든 앱을 함께 사용하여야 하는데, 주 기능들은 Unity쪽에 있었으나 권한관리와 더불어 각종 추가기능들이 Flutter쪽에 추가되고 있는 상황이었다.

 

이를 계기로 나는 첫 프로젝트에서 

Flutter App(Android, Windows), 백엔드 서버(.NET CORE), 서버 관리(IIS 호스팅)를 전담으로 맡게 되었다. 물론 사내 및 협력사의 유저들만 사용하는 앱이기 때문에 전체 유저가 2~3천명 선에서 유지되어 트래픽과 같은 것들은 신경쓰지 않아도 되었다.(쓸 줄도 모르지만..) 

 

문제는 `장애 발생`이었다. 내가 아무리 잘 만들었다고 생각해도 크고 작은 이슈들이 늘상 발생했고 그로 인해 항상 고통을 받았다. 당시 나는 개발에서 가장 중요한 것이 요청사항대로 빠르게 만드는 것이라고 생각했다. 물론, 지금 생각해도 빠르고 정확하게 개발하는 것은 개발에서 중요한 부분이라고 생각한다. 하지만, 현재의 나는 가장 중요한 것은 `문제 해결`이라고 생각한다. 어떤 문제가 발생했을 때 원인 파악부터 해결까지의 과정이 길어지는 것이 얼마나 끔찍한 일인지 이제는 몸으로 깨닫게 되었다. 

 

현재는 새로운 기능을 개발할 때

 

1. 장애 원인을 빠르게 파악할 수 있도록 하였는지

2. 내가 해당 에러 부분을 수정했을 때, 다른 기능들에 영향이 없는지

3. 최대한 데이터를 서버사이드에서 처리하였는지

 

이러한 부분들을 먼저 살피게 된다. 내 실력의 높고 낮음을 떠나, 장애 없는 완벽한 프로그램을 만드는 것은 불가능 하다. 하물며 나같은 개발하는 직장인의 수준에서는 경험의 부족으로 인해 어떤 문제가 어떻게 일어날지 예상하는 것도 벅찰때가 많다. 그렇기 때문에 `장애가 생기지 않도록 완벽하게 개발` 보다는 `문제가 생겨도 빠르게 처리가 가능하도록 개발` 쪽에 중심을 두게 되는 것이다.

 

그리고, 빠른 문제 해결을 위해 `로그`를 남기는 것이 그 무엇보다 중요한 일이라는 것을 깨달았다. 현재 나는 일자별, 기능별, 레벨 별로 로그 파일들을 서버에서 관리하고 있다.

 

예를 들어 2024-01-02_LOGIN.log 에서 INFO, DEBUG, WARN, ERROR로 로그레벨을 나누어 정상 작동과 비정상작동을 구분하는 것이다. 나의 경우에는 WARN은 사용자가 잘 못 사용한 경우, ERROR는 시스템에서 에러가 발생한 경우로 나누었다. 

 

로그 시스템을 만들고 난 후에는 누가 문제가 생겼다는 연락을 받으면 1.로그파일을 확인하고 2. 문제 원인 파악 3. 수정 의 짧은 과정을 통해 빠르게 장애 해결이 가능해졌다. 로그시스템을 만든 것은 내가 1년간 한 것중 가장 잘한 일이라고 개인적으로 생각하고 있다.

 

아마 누군가는 로그남기는건 당연한건데 그걸 자랑한다고 생각할 지 모르지만, 나는 잘 만든 프로젝트를 본 적이 없다. 실제 서비스를 구현한 코드를 본적도 없고, 시스템을 본적도 없다.

 

무엇이 불편한지를 모르는데 어떻게 불편할 수 있을까. 나는 오직 내가 체득하거나 어떻게든 필요한 키워드를 찾아내 독학하여 서비스를 운영하고 있다. Flutter와 .net core 모두 새 프로젝트 시작버튼부터 내가 만들어 왔기 때문에, 당연한 것들이 빠져있는 것이 로그 뿐만 아니라 더 많을 것이다. 

 

그것들을 채워가는 과정에서 개발에 대한 생각이 다시금 바뀌는 날이 오기를 기대해본다.