주요 기능 개발 업무 리스트

  1. 커뮤니케이션 서버 신규 기능 개발

    1. 채널, 공지사항, 일반 게시글 및 댓글, 민원, 마이페이지, 북마크, 좋아요, 숨김, 신고 등 커뮤니케이션 서버에 필요한 전반적인 CRUD 기능을 개발하였습니다.
    2. 단순 CRUD부터 정렬이나 필터가 중요한 기능, 여러 페이지네이션 기능 (오프셋 기반 페이지네이션, 커서 기반 페이지네이션), 엑셀 다운로드 기능 등을 개발했습니다.
    3. 그리고 개발과정에서 수차례 기획 및 정책이 변경되는 사항에 대해 빠르게 변경사항을 반영하고, 변경된 기능의 장애 요소를 파악하고 테스트를 해야만 했습니다.
  2. 커뮤니케이션 서버 컨트롤러에 도달하기 전에 필요한 레이어 추가

    1. 해당 API가 사용자 앱, 운영자 툴, 어드민 툴 중에 어디에 해당되는 것인지에 따라 각각에 해당되는 ArgumentResolver를 구현하여, 유효성 검증 및 데이터 파싱, 토큰 파싱 등을 분리하였습니다.
    2. 추가적으로 필요한 검증 중에 중복되는 코드를 최소화 하기 위해서 Controller 레이어에 AOP를 도입하기도 했습니다.
  3. 커뮤니케이션 서버 내에서 타 서버의 이벤트 처리 기능 개발

    1. 가령 회원이 가입되면, 회원서버에서 발행하는 Member_Created 이벤트를 받아서 커뮤니케이션 서버에도 자주 사용하게될 데이터를 생성해줘야 했습니다. 마찬가지로 수정, 삭제 이벤트가 발생할 시에도 이를 수신하여 처리함으로써 데이터 정합성을 유지할 수 있도록 기능을 개발하였습니다.
    2. 사용한 메세지큐는 ActiveMQ. 기존에 ActiveMQ를 AWS에서 띄우고 사용 중이었어서 이를 활용하였습니다.
  4. 커뮤니케이션 서버 신규 기능 쿼리 개선

    1. 혼자서 커뮤니케이션 서버의 신규 프로젝트를 진행한 것은 아니고, 함께 진행한 부분들이 많았는데 중간 중간 쿼리 최적화 작업도 진행하였습니다.
    2. 가령 @EntitGraph을 활용하여 join을 하는 경우 default가 eager다 보니 불필요한 N+1 쿼리가 발생할 수 있는데 이를 직접적으로 필요한 join만 하도록 수정, join 조건도 더 디테일하게 추가해서 연산을 최소화하는 작업이 해당되겠습다.
    3. 또한 인덱스가 제대로 걸려있지 않다거나, 잘못된 인덱스를 사용한다거나 하는 문제로 인해 조회 기능이 초단위로 느려지는 문제도 Query Plan을 통해 발견하여 개선했습니다.
  5. 파일 업로드, 전화번호부 엑셀 업로드 기능 개발

    1. 현장 운영자가 필요한 파일을 아파트 자료실에 업로드할 수 있도록, AWS S3에 파일을 업로드하는 기능과 전화번호부를 한번에 읽어서 편하게 업로드 가능하도록 엑셀 파일 읽어서 DB에 생성 및 업데이트 하는 기능도 개발하였습니다.
  6. 설문 및 투표 서버 이전 및 데이터 마이그레이션, 불필요한 코드 제거 및 리팩토링

    1. 설문과 투표 기능의 경우 기존 기능과 새로운 2.0 프로젝트 기능에서 동일하게 사용하기로 결정되었고, 기존에 설문 애플리케이션, 투표 애플리케이션 서버가 따로 있었던 구조가 불필요하다 판단되어 커뮤니케이션 서버에 전부 통합하는 작업을 추진했습니다.
    2. API를 옮기고, DB도 변경되어야하는 만큼 데이터 마이그레이션을 진행하였습니다. 그리고 이 과정에서 불필요한 컬럼을 제거하고, 사용되지 않는 코드를 제거하였고, 명확하지 않은 클래스 네이밍 및 패키지 구조를 변경하였습니다.
    3. 그 외 설문이나 투표 기간이 도래하거나 만료했을 때 자동으로 상태를 변경하도록 하는 스케쥴러를 각 추가했습니다.
  7. 소방시설세대점검 신규 기능 개발