회사 내에서 3달 가까이 근무를 하면서 두 가지 프로젝트를 하게 되었다.
보험 업무를 자동화하는 업무와 회사 내 프로젝트인 Sigma에 참여하게 되었다.
두 프로젝트를 진행하면서 나를 성장시키는 경험이 되었다.
업무 관련해서 내가 어떤 일을 했는지에 대한 회고는 너무 자세하게 써서 제외하고,
간단한 업무 경험과 작업 요약, 내가 느낀 점을 기준으로 작성한 회고록을 공유하려고 한다.
1. 에셋 보험 업무 자동화
사용 기술: Python, FastAPI, KakaoMap API, PostgreSQL, AWS S3, AWS EC2
내가 맡은 부분
- PoC 업무
- 수작업으로 진행 중인 보험 데이터 처리를 자동화하는 시스템 초기 구축
- 데이터 처리를 위해서 그룹핑 & 대표 선정 알고리즘 개발
- 액셀로 운영되던 데이터를 시스템화를 위해 DB 구축
- 데이터 정제 및 처리 후 액셀로 다시 반환
😍 좋았던 것(Liked)
- 현업의 상세한 피드백: 이해한 내용을 확인받고, 작업 진행 방향과 결과물을 공유하는 과정에서 현재는 어떤 방식으로 일을 진행하고 있고, 해당 업무에 대한 부담, 피로를 해소하기 위해 내가 어떤 작업을 해야할지 알 수 있었습니다. 또한 내가 하는 일이 다른 사람에게 큰 도움이 될 수 있다는 것을 느껴서 뿌듯했습니다.
📚 배운 것(Learned)
- 유지보수에 대한 고찰: 해당 프로젝트를 지속적으로 디벨롭하거나, 추후 데이터가 변경, 추가, 수정이 되는 경우 어떻게 해결할지에 대해서 고민을 했습니다. 계속해서 유지해야할 데이터는 무엇이고, 변경되는 부분과 고정된 부분에 대해서 각각 처리 방식을 고민하였습니다.
- 작업의 필요성: 해당 프로젝트를 진행하면서 자동화에 대한 필요성을 느꼈습니다. 현재는 일주일가량 걸려서 수작업으로 데이터를 정제하고, 처리하는 일을 진행하고 있는데, 개발을 통해 자동화를 하면 한 번 개발한 이후에는 몇 분만에 작업을 완료하고, 데이터를 저장한다면 추후에 분석, 통계를 낼 수도 있는 장점이 있습니다. 따라서 내가 지금 하는 일이 누군가에겐 정말 필요한 일이고, 누군가의 시간을 아껴줄 수 있는 일이 될 수 있다는 것을 느꼈습니다.
💦 부족했던 것(Lacked)
- 용어 정의: 보험 관련해서 계약은 어떻게 이뤄지고 수금자, TFA, 피보험자 등 생소한 용어와 회사와 개인의 차이 등을 이해하는 시간이 오래 걸린 것 같습니다. 모든 데이터가 정해진 타입, 형식과 맞아떨어지는 게 아니라서 예외들을 생각하고, 데이터를 정제하는 과정도 오래 걸렸다고 생각합니다. 이를 통해 도메인 자체에 대한 이해도 개발을 얼마나 빠르고, 정교하게 하는지에 영향을 주는지 느낄 수 있었습니다.
- 발표 자료 준비: 개인적으로 일하는 시간에 대해서는 인턴의 시간과 현업의 시간은 다르다고 생각합니다. 같은 시간이더라도 현업에게는 인턴에 비해 많은 작업량이 주어지기 때문에 최대한 시간을 뺏지 않아야 한다고 생각합니다. 하지만 회의 과정에서 버벅인다던가 시각적인 자료가 준비되지 않아서 곤란했던 적이 있었습니다. 심지어 내가 만든 자료임에도 불구하고, 제대로 된 설명을 하지 못한 적도 있었습니다. 그래서 다음부터는 발표 자료를 따로 준비해서 효율적으로 회의 시간을 사용하면 좋겠다고 느꼈고, 이전 실수를 만회하기 위해 회의 전에 발표 자료를 준비했었는데, 업무 일정이 맞지 않아 이후 회의를 하지 못해 아쉬웠습니다.
🕯 바라는 것(Longed for)
- 업무 설명: 나에게 주어진 일을 무엇이고, 어떤 목적을 가지고 어떤 기능을 구현해야하며, 주어진 자료와 데이터는 무엇인지에 대한 설명이나 문서가 있었다면 좋았을 것 같습니다. 데이터를 분석하고, 왜 이런 데이터가 만들어졌는지, 어떻게 다룰 것인지에 대한 고민에 시간을 많이 투자한 것 같아 개발 결과물에서 아직 만들지 못한 기능들이 많아서 아쉬웠습니다.
마치며…
이 프로젝트를 통해 실제 회사에서 겪는 어려움을 듣고, 해결하며 현업이란 무엇인가에 대해 알 수 있어서 좋았습니다. 특히 비개발자 직군에서는 아직 자동화가 되지 않은 부분이 많은데, 이번 프로젝트를 통해 자동화 하지 못하는 이유와 자동화를 할 경우 얻는 이득 등에 대해 알 수 있어서 좋았습니다.
비록 인턴이지만, 내가 누군가에게 도움이 되었다는 사실이 매우 뿌듯하고, 회의마다 제가 작업하는 부분에 대해서 수작업으로 하면 정말 힘든데, 도움이 많이 될 것 같다고 말씀해주신 정지애 프로님께 감사드립니다.🙂
2. Sigma 프로젝트 회고
사용 기술: gRPC, Python, FastAPI, CosmosDB, Azure Functions
내가 맡은 부분
- CosmosDB(NoSQL) 앞단 CRUD 기능을 하는 gRPC 서버 개발
- FastAPI 이용한 서버 개발
- CosmosDB(NoSQL) 엔티티 개발 & Azure Functions 활용한 Trigger 구성
- 성능을 위해 full-scan 대신 엔티티를 생성해 필요한 정보만 빠르게 찾도록 개발
- 해당 과정에서 데이터 무결성을 위해 트리거 사용
😍 좋았던 것(Liked)
- 진행 중인 프로젝트 참여: 재엽님께서 개발 중이신 프로젝트에 참여하게 되어서 좋았습니다. 특히 설계 과정에서 어떤 고민이 있었고, 왜 설계를 이렇게 하게 되었는지 들을 수 있어서 좋았습니다. 이유 없는 개발은 없었고, 굳이 이렇게까지 해야하나 싶은 지점마다 다 이유가 있었으며, 내가 아직 바라보는 지점이 낮다는 생각과 넓게 바라보는 법을 배울 수 있어서 좋았습니다.
- 새로 공부하는 기술: cosmosDB과 gRPC를 새로 공부하게 되었습니다. NoSQL partition에 대해서 알게 되었고 파티션 키가 최대 20GB를 지원하지만 권장은 15GB까지이며, 대략 천만개 정도라고 생각하여 파티션을 나눈다던가, Azure Function을 사용하며 trigger를 설정해보는 과정도 재미있었고, gRPC를 공부하면서 네트워크 계층에 대한 이해와 사용하는 이유, 사용법을 알게 되어서 너무 재미있었습니다.
📚 배운 것(Learned)
- 생각을 깊게: 뭐가 안되면 왜 안되는지를 고민해보고, 공식 문서를 찾아가며 어떻게 사용하는지, 다른 사람 깃허브를 보면서 어떻게 사용하고 나와는 뭐가 다른지를 고민하는 과정을 경험하면서 스스로 성장한 것 같습니다. 처음에 프로젝트에 참여하게 되었을 때, 어떤 걸 만드는지, 내가 하는 게 무엇인지도 모르는 상태에서 코드만 주어졌을 때 막막했었지만, 코드를 계속 보다보니 왜 이런 코드가 나왔는지가 눈에 보여서 신기했습니다. 나중에 유사한 서비스가 무엇이고, 대략 프로젝트의 큰 그림을 듣게 되었을 때 내가 코드를 보며 이해한 걸 확인하고, 부족한 부분을 채우는 과정을 겪으며 답은 코드에 있었다는 걸 느껴서 재미있었습니다.
- 유지보수 가능한 코드: 인턴은 짧으면 한달, 길면 세네달 정도 일을 하다가 떠납니다. 하지만 직원분들은 계속 일을 하시고, 내가 짰던 코드, 내가 맡은 부분을 수정하고 추가하는 작업을 이어나가게 됩니다. 그래서 최대한 알아보기 편하게, 간결하지만 부족하지 않게 코드를 작성하려고 했고, 그 과정에서 피드백을 받거나 풀리퀘를 이용해 흔적을 남기기도 했습니다. 특히 내가 짠 코드가 제대로 돌아가는지 확인하기 위해 테스트 코드를 작성해서 계속 확인했고, 정책적인 부분은 의논하면서 개발을 이어나갔습니다. 그러다보니 자연스럽게 폴더 구조, 파일 분리, 함수 분리, 예외 처리, 변수 이름, 타입 등 고려할 것이 많아졌고, 실력을 기를 좋은 기회가 되었습니다.
💦 부족했던 것(Lacked)
- 개발 실력: 그냥 부족했습니다. 이게 뭔가 한 번에 딱딱 하면 좋겠는데, 자꾸 이게 나을까 저게 나을까 하루종일 고민만 하고 있으니까 고민하는 거에 시간을 너무 쓴 것 같기도 하고, 처음 코드만 딱 봤을 때도 이해하는 시간이 너무 오래 걸린 것 같고 그랬습니다. 고민하는 거는 그래도 그냥 적정선에서 딱 그만 고민하고, 가장 좋아보이는 걸로 하자 이런 느낌이었는데, 처음 코드만 봤을 때는 어버버대면서 이해하기까지 시간이 오래 걸렸습니다.
🕯 바라는 것(Longed for)
- 신랄한 비판과 피드백이 필요하다: 피드백을 받으러가면 다 괜찮다고 해주셔서 이게 진짜 좋은건가 라는 의문이 들었습니다. 정말 올바른 답을 얘기해서 괜찮다고 말씀해주시는건지 아니면 완전 올바른 답은 아니지만, 그렇다고 아예 틀린 것도 아니라서 괜찮다거나 나중에 어차피 수정해야되니까 그냥 해도 괜찮다고 해주시는지 잘 모르겠습니다. 매번 괜찮다고 해주셔서 감사하긴 했지만 속으로는 이런 생각이 있었습니다….
예를 들면 테스트 없이 코드 다 짜고 딱 돌렸을 때 왜 에러가 하나도 없지? 와 비슷한 느낌…
마치며…
- 제일 재미있었다: 재미있다는 게 함축적인 의미인데, 배울 것도 많았고 새로운 경험도 많이 하고 일을 재미있게 했던 것 같습니다. 뭔가 좀 더 고민하게 되고, 좀 더 꼼꼼하게 하게 되고 이런 것들이 모여서 재미있다는 느낌을 받게 한 것 같습니다. 예를 들면 매주 챌린지를 하는 느낌. 피드백 받는 게 기다려지기도 하고, 그걸 위해 준비하고, 열심히 작업하고 이러는 일련의 과정들이 귀찮거나 일이 싫거나 하지 않고, 정말 재미있게 일했었습니다.😀