들어가며
7개월 간 회사의 MLOps 솔루션을 고도화하고, 고객사에 파견을 나가 커스터마이징 구축 업무를 수행했다. 힘들었지만, 많이 배우고 재밌는 프로젝트였다. 운이 좋게도 관심 있었던 기술들을 다양하게 접할 수 있었다. 프로젝트 기간이 짧기 때문에 숙련되었다고는 할 수 없지만, 앞으로 기술을 더 넓고 깊게 쌓아갈 열쇠를 얻었다는 생각이 든다.
경험이 중요하다. 어쩌면 학습보다도.
고객사에 파견을 나가 솔루션 커스터마이징 개발을 수행하고, 통합 테스트 기간에 고객사로부터 접수되는 결함을 조치하였다. 주어진 시간은 짧은데 할 일은 많아서 정신 없이 개발했던 것 같다. 프로젝트 현장에 나오니 '이건 돈 받고 구축해주는 서비스'라는 나름의 책임감을 가지게 되었고 내가 할 수 있는 최선을 다했다. 기능을 개발하면서 발생할 수 있는 문제들을 미리 고민해보고, 접수된 결함을 성심껏 조치했다.
당시에는 힘들었는데, 돌이켜보면 그러면서 실력이 많이 늘었다. 실력을 쌓는다는 것은 "학습한 기술을 경험으로써 완성해가는 과정"이라고 생각한다. 기술을 학습하기 위해서 책, 강의, 스터디, 사이드 프로젝트 등 다양한 방법을 활용할 수 있다. 어떤 방법으로든 학습을 하는 것이 안하는 것보다는 훨씬 좋지만, 어디까지나 실전을 위한 도구를 쌓아가는 과정 내지는 예행 연습일 뿐이다. 개발자는 사용자에게 쓸모 있는 무언가를 만들어내야 하는 사람이다. 그러려면 현실에서 마주하는 여러 요건들을 고려해야 하는데, 학습하면서 배운 내용만으로는 그 모든 요건들을 충족할 수 없다. 머릿속에 가지고 있는 내용들을 응용하고 주어진 상황을 고려하여 합리적인 결정을 내릴 수 있어야 한다.
프로젝트를 하면서 기능을 구현하고, 문제들을 해결하기 위해서 엄청나게 복잡한 기술을 사용하지 않았다. 그보다는 담당자와 커뮤니케이션하며, 타당한 비즈니스 로직을 설계하고 구현하는 것이 더 중요하고 어려운 작업이었다. 단순히 학습한 기술 지식 이상의, 커뮤니케이션 역량과 문제 해결 역량이 필요했다. 그리고 이런 것들은 경험으로 쌓아야 함을 직접 느낄 수 있었다.
상용 어플리케이션에서 중요한 것들 : 비용, 보안, 성능
입사 전에 SSAFY에서 만들었던 사이드 프로젝트들은, 비유하자면 '실제품'의 '모형'을 만드는 작업이었다. 내가 써보고 싶은 기술들을 활용해서, 구현해보고 싶은 서비스를 팀원들과 같이 만들면 그만이었다. '실제품'을 만들면서, 구현 이상의 중요한 것들이 있음을 알게 되었다. 가장 첫째로는 비용이었다. 본사에서나, 고객사에서나 항상 비용을 염두에 두고 개발 환경을 셋팅했다. 생각해보면 이전 회사에서도 어떤 의사결정에 있어서 가장 중요했던 요소 중 하나는 비용이었다. 개발 과정은 결국 부가가치를 만들어내기 위한 소프트웨어 제품을 만드는 과정이고, 그러자면 비용은 무시될 수 없는 요소이다.
두 번째로는 보안이었다. 대부분의 프로젝트가 그렇듯, 우리 솔루션에도 고객사에서 모의해킹을 진행했고 그 결과에 대한 조치가 필요했다. 인증 토큰 탈취, XSS, SQLInjection 등의 웹 보안에 관심을 갖는 계기가 되었다. 마지막으로는 성능이었다. 부하 테스트와 가용성 테스트를 진행했다. 실제로 사용되는 서비스이기 때문에 부하를 높게 줘도 잘 작동하는지, 가용성이 잘 확보되는 지가 중요하다는 것을 알게 되었다.
개발자의 전문성에 대한 생각
이번 프로젝트를 하면서 가장 좋았던 점은, 다양한 기술을 접할 수 있었다는 점이다. CRUD를 기반으로 구현되는 단순 웹 서비스에서 나아가, Kubernetes 환경에서 기동되는 MLOps 파이프라인, 그리고 분산 처리 아키텍처를 경험할 수 있었다. 그리고 Linux와 좀 더 친해지는 계기가 되었다.
'이것저것 다 해보면서' 걱정이 들기도 했다. 개발자로 성장하는 데 있어 초반에는 기본적인 영역에 집중해서 전문성을 쌓고, 그것을 기반으로 분야를 넓혀가야 한다고 종종 들어왔다. 단순 웹 서비스라고 표현했지만, CRUD만 해도 잘 만들려면 숙련이 필요하다. 기본적인 영역도 숙달되지 않았는데, '너무 범위를 넓히면 이도 저도 안 되는게 아닐까?' 하는 걱정이 들었다.
프로젝트를 마친 지금에 와서 돌이켜보면, 그럼에도 범위를 넓혔던 건 현명한 선택이었다고 생각한다. 모든 분야는 연결되어 있기 때문이다. 아는 만큼 보인다고 한다. 개발자의 전문성은 집중보다는 확장이라고 느꼈다. 좁은 분야를 파고 내려가다보면 자연스럽게 넓어지고, 넓어지다보면 또 파고 내려가야 하는 순간이 온다. 그러면서 가능한 많은 분야에 대해 경험하고 숙련하면서 실력을 쌓아가는 것이다. 결국에는 모든 분야를 알아야 한다면, 흔히들 말하듯 분야를 넓히고 시작하나 좁혀서 시작하나 끝에 가서 보면 큰 차이가 있을까? 정답은 없고 각자의 상황과 적성에 맞추면 되는 것 같다. 나는 일단 다양하게 접하면서 시작하니 재밌었고, 그래서 더 의욕적으로 프로젝트에 임했던 것 같다.
Connecting the Dots
재미있는 프로젝트였고, 내가 쌓아왔던 역량들을 발휘할 수 있어서 뿌듯했다. SSAFY에서 Java 웹 개발 과정을 시작하면서, 앞으로 일을 하면서 Python을 활용할 일이 없을 것이라고 생각했다. 이전 직장에서 프로그래밍을 해왔지만 소프트웨어 개발과는 결이 달랐다. 그러나 MLOps라는 컨셉을 이해하고 개발에 참여하는 데 있어서 직장 경험이 큰 도움이 되었다. 그리고 GCP 환경에서 일했던 경험 덕분에, AWS 환경에도 특별히 힘 들이지 않고 적응할 수 있었다.
그리고 SSAFY에서 팀 프로젝트를 하면서, Docker를 이용해서 서비스를 배포하는 CI/CD 파이프라인을 구축하였다. 사실 당시에는 Java + Spring에 집중하고 싶었는데 '언젠가는 도움이 될 것'이라는 믿음을 가지고 팀장으로써 해당 역할을 자처했었다. 이러한 경험이 Kubernetes 기반의 어플리케이션을 이해하고 또 개발에 참여하는 데 큰 도움이 되었다.
여태껏 하고 싶은 것들에 최선을 다해왔다. 그리고 이런 방향성에 대해 점점 확신이 생기고 있다. 다음 프로젝트 전까지 내가 흥미와 필요를 느끼는 부분들에 대해서 공부해보려고 한다. 부족한 '기본기'에 대해서 좀 채워넣고 싶고, 여건이 될 지 모르겠지만 Kubernetes에 대해서도 좀 더 깊이있게 배우고 싶다. 그리고 좀 더 본격적으로 Spark, Hadoop 등의 빅데이터 처리 기술도 접해보고 싶다. 무엇이든 제대로 학습하고 잘 숙련할 수 있다면, 앞으로의 개발자 생활에 도움이 될 것이다.
관련 포스팅
'회고' 카테고리의 다른 글
| 8. 좋은 개발자에 대해 생각했던, 세 번째 프로젝트 회고 (0) | 2025.10.03 |
|---|---|
| 7. 짧지만 임팩트 있었던 Python 백엔드 개발기, 두 번째 프로젝트 회고 (0) | 2025.06.04 |
| 5. SSAFY 회고(생활, 학습, 취업, 비전공) (0) | 2025.02.15 |
| 4. 삼성청년SW아카데미(SSAFY), 지원부터 합격까지 (0) | 2023.11.04 |
| 3. 개발자가 되기로 마음을 굳혔던, 첫 회사 회고 (0) | 2023.11.04 |