나는 회사의 제품을 서빙하는 팀에서 일한다.
제품이 고객사 환경에서 잘 작동되어야하며 고객사마다 요구조건이 다르기 때문에 쉽지 않은 일인 것 같다..
이 프로젝트는 12월부터 2월까지 아주아주 꽉 채운 3개월..(주말출근,,야근,,)프로젝트이며
겉으로봐서는 큰 요구조건은 없어보였다. 그래서 원래 기간은 1개월이었는데 계속해서 연장이 되었다.
연장의 이유는... 제품문제도 있었지만 고객사와의 소통이 제일 어려웠다.
간략히 내가 해야할 일을 설명하자면
1. 인터페이스 개발
2. 회사 제품 스키마 및 플러그인 개발
3. 배치스케줄 작성
4. 개발/운영 배포
5. 등등..
IDE : IntelliJ
언어 : Java
타입 : Maven
🍙application.properties 파일을 외부로 빼내 시스템의 설정 정보, 인터페이스 작동 방식 등에 대한 유지보수를 쉽게 할 수 있도록 개발하였다.
Docker 패키징할 때 반영되도록 Dockerfile에 추가해두었다.
🍩Ctl
🍩SvcImpl
이런식으로 처리 하였다..(Dto,mapper 등은 생략..)
🍩 제품의 기본 결과는 json파일로 전달되지만 csv 변환을 위해 제품 내부에서 변환 할 수 있게 처리함 (JS)
🍩 api 호출 쉘
1. 요청받은 데이터를 제품 input 디렉토리 내 디렉토리 생성하여 넣음
2. 제품 호출 후 sleep 10m 으로 10 분에 1번 꼴로 호출되도록 설정
🍩파일 전송 쉘
1. scp를 사용하여 서버간의 파일 전송
🍩제품 재기동 쉘
1. 제품에 관한 core-server pod들 특정 기간마다 재기동
🍩 위 3개의 쉘을 crontab을 활용하여 스케줄링
개발완료된 인터페이스를 Kubernetes 클러스터에서 실행해야 했다.
Docker로 이미지를 패키징하고... Pod로 배포하고...
Dockerfile과 deplotment.yaml 파일도 생성해서 함께 넣어줘야한다!!!
뭔가 되게 대충 적은 것 같지만..
느낀점을 간략히 말하자면 SI로 일하기 위해선 정말 프론트, 백, 서버 등등 다 알아야 한다는 것이다.
어려웠던 부분들은
docker와 Kubernetes였다. 그리고 생각보다 쉘스크립트 작성도 문제가 되었었다. 하지만 구글에 정말 다양하고 잘 나온다ㅋㅋ.
A부서의 UI가 넥사크로로 이루어져있어 MultiPart 처리가 쉽지 않았다. HttpServletRequest를 MultipartHttpServletRequest로 해보았지만 넥사크로 때문인지 처리가 되지 않았다..
폐쇄망 환경에서 개발한다는 것은 확인해야할 것도 절차도 복잡하다. 그러니 많은 테스트로 어느 부분이 문제인지 언제 해결되는지 등등 계속 확인해야하며
팀 프로젝트가 아니기 때문에 고객사와 소통이 중요했다. 왠만하면 모든 회의의 회의록은 꼭 남기는게 좋을 것 같다..
3개월동안 고군분투하고 피드백도 한분한분께 요청드리며 나름 잘마무리하고 나와서.. 뿌듯하지만 아직은 허점이 많고, 모르는 것 투성이라는걸 알게되었다.
다음 프로젝트는 좀 더 쌈@뽕하게 하고 나와야지..
허접한 회고록인지 일기인지 끝!