개발일기

나의 개발 기술 스택 정리

초롱불 2024. 3. 24. 23:45

  4개월 뒤면 3년차 개발자가 되는 시점에서 내가 참여했던 프로젝트에서 쌓은 개발 기술 스택을 정리해보고자 한다. 내가 어떤 것을 써먹어봤는지 정리해보면서 내가 배운 기술을 점검하고 앞으로 어떤 기술을 배워나가면 좋을지 확인하고자 한다. 개발자로서 앞으로 해나갈 프로젝트들이 많이 있을 것이고 그때 그때 사용해야 하는 기술이 바뀔수 있으리라 생각한다. 하지만 큰 틀에서는 비슷한 기술을 해나갈 것이기 떄문에 사전에 쌓은 기술을 지속적으로 가지고 갈 수 있도록 기록해두는 것은 무척 의미있는 일이 될 수 있으리라 생각한다.

 

첫 번쨰 프로젝트: 공공프로젝트였는데 이곳에서는 파이썬을 이용한 웹 페이지 크롤링과 이를 엑셀로 정리하는 작업, pyQt5를 이용하여 만든 GUI 데이터 진단 툴을 만들었다. 혼자서 파이썬을 이용하여 간단한 툴을 만드는 작업을 하였기 떄문에 협업 툴이나 단위 테스트를 수행하지는 않았다. 돌이켜보면 개발자로서는 매우 독특하고 유니크한 프로젝트에 참여한 셈이었다. 그것도 첫 프로젝트로. 당시 내가 배웠던 기술은 코딩 학원에서 6개월간 배운 자바 웹 프로그래밍이 전부였고 파이썬은 해당 학원 커리큘럼에 포함되어 기초 문법을 확인한 정도였다. 그러나 파이썬은 문법이 간단했고 혼자 프로그램을 만드는 정도였으며 유지보수 개념까지 생각하지 않아도 될 1회용 프로그램 개발이었기에 동작이 이루어 질 수 있게만 개발하였다. 내가 개발을 할 수 있다는 자신감이 생기는 데에 보탬이 되었고 자유도가 높았기에 스스로 설계까지 하는 다양한 경험을 했다는 점은 장점이었지만 팀으로 수행하는 일에 대한 경험, 규칙이 주어진 상태에서의 개발을 해보지 못했다는 점에서는 초보자에게 좋지만은 않은 프로젝트였다.

기술 스택 정리: python, pandas, selenium, crawler, pyQt5, python 엑셀 자동화, 데이터 진단

 

두 번째 프로젝트: BI프로젝트 회사로 이직 후 첫 프로젝트. EIS 포털 유지보수 업무를 맡았다. JAVA 웹에 SAP에서 제공하는 BI 툴을 활용하여 만든 대시보드를 유지보수하는 일이었다. 발주 회사는 중공업 생산 회사였다. 회사에서 필요로 하는 업무 내용에 대해서 익힐 수 있었다는 점이 가장 큰 배움이었다. 개발자로서의 개발지식은 아니었지만 업무 파악에 기본이 되는 지식을 배울 수 있었다. 제품 생산과 매출, 유통 과정, 목표값과 실제값 그리고 그 비율, 그외 재무 관련 용어들까지. 이미 개발이 이루어진 화면에 대한 화면 유지 관리만 진행하는 만큼 실제 데이터를 다루거나 큰 개발 요건이 있지는 않았지만 말로만 들어서는 이해하기 어려웠던 SAP에 대한 구성 이해나 BI 툴의 역할에 대해서 이해할 수가 있었따.

기술 스택 정리: SAP Lumira, SAP GUI, SAP BW, SAP BO, Java Spring, tomcat, linux, ssl, SAP Webi

 

세 번째 프로젝트: 두 번째 프로젝트와 비슷한 기술 스택을 요구하는 프로젝트였다. 다른 점이 있다면 두 번째 프로젝트는 유지보수였고 세 번째 프로젝트는 개발이라는 점이었다. 개발을 진행하다보니 데이터 마트 설계를 하고 제작하는 것을 어깨너머로 배울 수 있었고 그것을 화면으로 표현하는 것까지 이루어지는 과정을 몸으로 배울 수가 있었다. 데이터 웨어하우스와 데이터 마트, ETL, 현업과의 대화와 요구사항 정의 등에 대한 개념, 협업시에 주의 사항 등을 정리하여 규칙 속에서 이루어지는 개발에 대한 지식이 늘었다. 또 해당 발주사는 SAP BI 툴을 쓰되 데이터 웨어하우스의 DB로 오라클을 쓰고 있었기에 오라클에 대한 지식도 얻을 수 있었다. 처음으로 개발 제안을 하기도 하였다. 첫 번째 프로젝트에서 수행한 적이 있었던 크롤링 기술과 두 번쨰 프로젝트에서 제작하는 것을 본 적이 있는 크롤링하여 캡쳐한 화면을 메일링하는 프로그램을 으용하여 세 번째 프로젝트 회사에게 메일링 프로그램을 제안하였다. SAP Lumira의 경우 자체 메일링 기술이 제공되고 있지 않았기에 이와 같은 제안이 필요하였고 타 회사 사례도 있기에 충분히 유효한 개발이라고 판단되어 제안이 받아들여져 개발을 수행하였다. 두 번째 회사에서는 개발 언어로 Node.js를 썼고 puppeteer라는 패키지를 사용했기에 내가 원래 알고 개발하던 파이썬 selenium에서 node js로 언어를 변경하여 개발을 수행하였다. 처음에는 파이썬으로 먼저 개발을 해보았으나 selenium의 경우 브라우저의 버전 변경 이슈로 인하여 크롤링이 제대로 수행되지 못하는 경우가 생길 수 있고 버전 이슈를 제거하기 위해서는 매번 새로운 브라우저 드라이버를 다운 받은 뒤에 프로그램이 수행되어야 한다는 점이 너무 큰 이슈로 판단되어 다른 드라이버를 요구하지 않고 해당 서버 피시에 설치되어 있는 크롬의 경로만 지정되어 있으면 크롤링이 이루어지는 Node js 를 개발 언어로 선택하여 수행하였다.

 

기술 스택 정리: SAP Lumira, Oracle, DW, DM, PL/SQL, ETL, Data Service, 원격 서버 개발, tomcat, java, Crawler, Node.js, puppeteer

 

네 번쨰 프로젝트: 세 번쨰 프로젝트와 비슷한 기술 스택을 요구했다. 데이터 마트를 구성하고 BI 툴로 보고서를 만들면 되는 일이었다. 다른 점이 있다면 이번에는 사수 없이 혼자 마트 모델링을 하고 BI 툴을 이용하여 화면을 구성하면 되었다. 현업과 커뮤니케이션하며 혼자서 개발하면 되는 일인만큼 그렇게 복잡한 요건이 있는 건 아니었다. 로직은 이미 구현된 로직을 따와서 생성하면 되었다. 하지만 처음으로 혼자서 하게 되는 일인만큼 부담감이 컸고 SQL 문으로 하는 개발에 익숙하지 않아서 개발 시간이 많이 들었다. 힘든만큼 책임감도 생기고 내가 중요한 역을 맡게 되기 시작하는 것 같은 기분이 들어서 즐겁기도 하였다. 무엇보다도 그 많은 데이터를 내 마음대로 쌓고 고치고 하는 부분이 즐거웠다. 최종적으로 보여지는 수치의 정합성을 맞춰야 한다는 점은 부담스러운 일이었지만 그게 맞아들어가기 시작하면 그보다 즐거울 수 없는 일이었다.

기술 스택 정리: SQL, SAP Webi, Data Service, MSSQL, Sybass, DW, DM, ETL

 

다섯 번째 프로젝트: SAP SAC(sap analytics Cloude)라는 툴을 처음으로 접하게 되었다. SAP에서 차세대 BI 툴로 밀고 있는 SaaS(Software as a Service) 프로그램이었다. 말그대로 클라우드 위에서 돌아가는 BI 툴인만큼 사내에 서버를 두고 유지보수를 하는데에 드는 비용을 절감할 수 있으며 이용자도 따로 프로그램을 설치하는 등의 수고를 하지 않아도 되는 면에서 편리한 도구이다. 다만 신규로 개발되어 발전해 나가고 있는 프로그램인만큼 지원하지 않는 기술, 새로 출시되면서 바뀌어나가고 있는 점도 많은 도구였다. 우리 회사에서도 뒤쳐지지 않기 위해서라는 개념으로 SAC 프로젝트에 참여할 수 있는 기회를 가지게 되었고 그 프로젝트에 내가 참여하게 되었다. 그런 의미에서는 긍정적인 의미가 많은 프로젝트였다. 새로운 BI툴을 익힘으로서 트랜드를 따라갈 수 있었고 추후에 있을 수 있는 SAC 프로젝트에 참여하게 될 수 있으리라는 기대를 높일 수 있었다.

기술 스택 정리: SAP SAC, SAP BW

 

여섯 번쨰 프로젝트: 현재 진행 중인 프로젝트로 추가적인 기술 요건을 배울 수 있을 지도 모르나 현재까지 사용한 기술을 정리해보도록 하겠다. 우선 이 프로젝트는 내가 BI 회사로 이직한 뒤로 마주하던 SAP BI 관련 툴을 사용하는 프로젝트와 무척 성격이 달랐다. SAP BI 툴 뿐만 아니라 태블로나 Power BI 같은 BI 툴 자체를 사용하지 않았다. 대신 사용하는 건 스프링 웹과 vue, ETL 툴 대신 스프링 배치였다. 갑자기 개발 학원에서 배우던 자바 웹 개발을 다시 하게 되는 기분이 드는 프로젝트이다. 나는 스프링 부트 설정을 더듬더듬 떠올리면서 확인하며 초기 세팅을 마쳤고 취업준비 할 때 본 기억이 있는 vue의 코드를 작성 되어 있는 템플릿 코드를 뜯어가면서 확인하였다. 이 프로젝트에 내가 들어올 때 나에게 주어진 역할은 DB 개발자로 집계 테이블 제작 요건에 맞추어서 테이블을 설계, 구성하고 ETL하며 데이터를 적재하는 안건이었다. 하지만 진행되는 상황을 보아서는 화면 개발도 이루어질 필요가 있어보였다. 현재는 열심히 공부하면서 나의 기술 스택으로 만들어 나가는 중이다.

기술 스택 정리: Spring boot, Spring batch, vue.js, Nuxt, tibero DB, RFC

 

기술 스택을 정리해보니 생각보다 많은 프로젝트를 다녀왔고 많은 걸 배웠구나 싶어 뿌듯한 마음이 든다. 개발자는 평생 공부를 해야하는 직업이고 그만큼 기초가 중요하다는 말이 어떤 의미인지 생각하게 되기도 한다. 또 새로운 개발 현장에 뛰어들어 배워가면서 개발을 하는 것에 대한 두려움을 가질 필요가 없다는 걸 마음속에 새길 필요가 있다는 것도 느끼고 있다. 기초가 있다면 어떤 개발 툴이든 언어든 해쳐나가는데 도움이 되는 베이스가 될 뿐 사용하지 못할 외계언어가 아니라는 점을 기억하면 될 듯하다. 개발 소스를 읽는 걸 두려워하지 말고 더 나은 소프트웨어가 되려면 어떤 고민이 필요할지 지속적으로 생각하고 이끌어 나간다면 결국에는 좋은 개발자가 되어 있으리라 믿는다.