- 배포 자동화
상황
배포 시, FTP를 통해 class 파일을 직접 올리는 방식을 사용해왔습니다.
휴먼 에러와 개발 비용이 많이 소모되었습니다.
실행
배포 자동화 도구인 Jenkins 를 통해 파이프라인을 구축했습니다.
Stage는 빌드 - 백업 - 배포로 구성하였습니다.
결과
배포 전에 문제가 있는 부분은 젠킨스가 알려주고,
많은 시간과 휴먼 에러를 줄일 수 있었습니다.
- 프록시 파일 생성 시, 문제 식별 및 개선
상황
영상, 음향, 이미지를 프록시 파일로 경량화하여 서비스합니다.
여러 파일을 생성하는 과정에서 서버가 다운되는 문제가 발견되었습니다.
실행
파일 생성 상태값으로 시작, 생성중, 완료가 있습니다.
상태값을 확인하여 setTimeOut으로 서버에 상태값을 재요청하는 방식으로 동작합니다.
5개의 파일을 진행하면 5개의 상태값을 확인하고 5번 호출을 합니다.
이 과정에서 요청 횟수를 배수로 보내 과부하가 걸리는 것을 확인하였습니다.
일단 상태값을 배열로 담아 한번의 요청만 보내는 것으로 수정하였습니다.
그리고 실시간으로 빠른 리소스의 변경이 필요하다 생각하여 polling websocket 으로 개선하였습니다.
결과
10개 이상의 파일을 올려도 문제없이 프록시 파일을 생성하였습니다.
웹소켓 개선하여 배열에 담지 않고 바로 리소스 변경이 가능했습니다.
- 전자계약서 솔루션 연계
상황
사용자가 계약서를 수기로 작성하여 pdf로 직접 업로드 하였습니다.
솔루션을 통해 전자 서명을 하고 완료 계약서 파일을 자동으로 업로드하는 연계 작업을 진행하였습니다.
실행
계약서 상태 값에 따른 이력 테이블, webhook 이력 테이블, 계약서 파일 테이블을 설계하였습니다.
상태값에 따른 데이터 저장은 스테이트 패턴으로 설계하였습니다.
단일 책임 원칙에 따라 파일 다운로드, 토큰 생성, 토큰 검증, 통신 기능의 Class를 분리하였습니다
결과
전자계약서 상태값에 따라 webhook 이벤트로 정상적으로 테이블에 저장되고,
완료된 계약서 파일이 저장되었습니다.
- 전자 계약서 연계, 운영 환경에서 NoSuchAlgorithmException 문제 해결
상황
로컬과 개발 환경에서 테스트를 완료하고 운영 서버에 배포하였습니다.
업체에서 제공하는 코드에서 ECKeyFactory not available 오류가 발생하였습니다.
실행
차이점은 JDK 버전으로 확인하였고 이것을 중심으로 해결책을 찾았습니다.
keyFactory class 에 ECKeyFactory 인스턴스를 주입해줘야 사용할 수 있다는 것을 확인하였습니다.
결과
정상적인 작동을 확인하고 업체에서는 그럴리 없다는 답변만 들었던 상황이라 더 확인해본 결과,
썬 마이크로시스템즈가 오라클에 인수되며 해당 JDK는 sun 패키지가 제공되지 않는 것을 확인하고
Oracle에서 sun 패키지는 사용을 추천하지 않는다는 것을 확인하게 되었습니다.
더보기