프로젝트명: OCPP 1.6 관제 고도화 및 마이그레이션
서비스형태: 자사서비스
성과
* 기존의 개발 및 운영계획은 빠르게 express를 nest.js로 변환하면서 버그를 수정하여 빠른 운영과 GS인증이 목표점으로 nest.js와 타입스크립트로 마이그레이션을 도입 및 쿠버네티스 배포 및 테스트를 하는 것에서 안정적인 구축방향으로 선회하여 다시 한번 마이그레이션을 진행
* 회사의 달라지는 요구사항과 결정사항을 빠르게 대비하고자 레이어드 아키텍처에서 변경 / 확장이 용이한 헥사고날 선택
* 노드 nest.js -> 자바 스프링부트3 로 언어 변경. 1.21부터 가상스레드가 등장하여 비동기처리가 용이하졌고, 스프링부트와 비슷한 nest.js보다 스프링브트의 다양한 애노테이션과 기능이 더 낫다고 판단, typeorm의 쿼리빌더와 유사한 쿼리 DSL선택
*이벤트 스토밍 및 도메인 주도개발 도입
프로젝트명: OCPP 1.6 관제 마이그레이션
서비스형태: 자사서비스
성과
* Method 데코레이터와 parameter 데코레이터로 공통관심사 분리
* Express 시퀄리이즈 -> Nest.js typeorm으로 변경
* 앞단 웹소켓 접속 및 메세지 처리 스케일 아웃시 해당 인스턴스에게 MQ메세지 전달하지 못하는 아키텍처 설계 오류 -> 인스턴스 실행 시 토픽 생성 및 전달, DB 저장하여 관리하여 두 개의 스케일 아웃 인스턴스 연동
* 불필요한 DB테이블 삭제* 불분명한 서버 구조 -> 레이어트 아키텍처로 전환
* 팀 Nest.js 교육
* 프로젝트 리드 및 일정 , 티켓분배
* EKS 쿠버네티스배포
충전기-관제 미들웨어 인터페이스 서비스
성과
* Go로 웹소켓기반 미들웨어 시비스의 인터페이스 의존성 주입과 의존성역전(의존성역전원칙)을 기반으로 전략패턴을 이용하여 연결 서비스마다 바꿀 수 있게 하였고(리스코프 원칙) 단일 책임 과 개방폐쇄 기반으로 아키텍처를 구성하여 확장성있게 설계함
* 프로메테우스를 서버로 따로 띄우지 않고 내부에서 가볍게 설치하여 필요 부분 및 데이터 커스텀마이징하여 HTML 메타 태그로 5초 후 자동적으로 api호출시켜, 실시간 서버의 고 스레드 수, 리퀘스트와 리스폰 (웹소켓 OCPP 메세지들) 카운트, 웹소켓 접속 수, 고 가비지컬렉터 용량, 메모리 사용량등 그래프를 볼 수 있게 함.
* 고루틴 누수, 메모리 누수 찾아내어 제거
* 쿠버네티스 , helm chart, docker image, jenkins, 배포 쉘 스크립트, ecr로 이어지는 배포 파이프라인 설계 및 개발
* 쿠버네티스 엔진엑스 인그레스 적용
* aws route53, ELB, ECR, EKS 적용
* 프로젝트의 리딩을 맡음(설계, 구현, 기술선택, 업무배분등)
OCPP 1.6 관제 시스템
성과
* 짧은 시간 내 팀원들과 1차 기획 요구 사항을 모두 충전하는 서버 개발
* ChatGPT, 코파일럿을 활용하여 개발 속도 증가
* OCPP 플러그 테스트 행사 (다국적 타 기업들과 충전기와의 연동)에서 관제 서버 연동 테스트 성공
* makefile과 쉘스크립트를 만들어 시퀄라이즈의 자동적 시드와 마이그레이션 명령 실행
RE100(외주SI)
성과
* 지속적으로 변경되는 데이터 모델과 기획 그리고 해당 내용이 공유되지 않은 상황 속에서 직접적으로 '갑'의 디비에서 연구 / 덤프를 떠서 개발
* 서로 각기 다른 데이터 모델의 60만개의 발전량/사용량 데이터를 해당 개발 앱의 데이터 포맷으로 변경 / 마이그레이션 후 실시간 연동 작업
* 빠른 통계를 위한 분 / 일 / 월 / 년의 스케쥴링 작업
* RESTAPI 제공(관리자, 계약, 로그인, 통계 등)
* master(갑 데이터 베이스) -> 레플리카(앱 데이터베이스)로 구축하여 갑 데이터 베이스의 트랜잭션을 자동적으로 받을 수 있도록 설계
* 쉘 스크립트로 더미 데이터 생성 프로그램 개발하여 프론트에서 사용할 수 있도록 개발(VPC로 접근해야 하지만 미제공과 aws 제어 권한 없음)
더보기