뭐요

업무 정리 및 회고 (3) 본문

Activity/Smart Olive

업무 정리 및 회고 (3)

욕심만 많은 사람 2023. 3. 17. 15:37

업무 정리

SA 팝업 관리 메뉴의 기능 개선 요청

전달 받은 요구사항은 다음과 같다.
AS-IS : 기업검색 및 선택할때 드랍다운 형태로 되어있고 검색이 어려움
To-Be : 기업명으로 검색 기능 추가 및 팝업등록 시 복수 선택하여 등록 가능 기능


기업이 약 100개 이상 존재하지만 검색 기능이 없고 현재는 오직 1개만 선택할 수 있도록 되어 있었다. 이에 대해 기능을 개선하기 위해 드랍다운 형태로 기업 목록을 띄우는 것이 아니라 팝업창 형태로 띄워 Ctrl + F를 통해 검색할 수 있게 하고 복수 개를 선택할 수 있도록 해서 동적 쿼리를 사용해 LIST형식으로 반환하여 여러 개의 기업 정보를 한 번에 볼 수 있게 했다.

거의 자바스크립트 작업이었어서 어려움이 많았다. 전반적으로 언어에 익숙하지 않기도 하고 어떤 식으로 에러 해결해나가야 할 지 몰라서 사수 분께 도움을 요청했다. 페어 프로그래밍을 통해 웹상의 콘솔창에서 에러를 확인하고 디버깅 해나가는 과정을 배웠고 다음부터는 도움 없이도 할 수 있을 정도로 배웠다. 진짜 무뚝뚝하신데 일 잘하시고 간결하게 잘 설명해주신다. 최고….

일반 가맹점 TABLE에 Column 추가 후 CRUD 적용

일반 세금 계산서에 대한 Column을 TABLE에 추가하고 관리자 페이지에서 일반 세금 계산서 기능을 사용하는 지, 안하는 지 여부에 따라 검색될 수 있도록 CRUD를 적용했다. 이제는 업무에 잘 적응해서 이정도는 20분이면 하는 게 뿌듯 뿌듯

서버 배포

해당 회사가 개발 중인 각 컨텍스트 마다 배포 할 수 있는 시간이 정해져있다. 전자 식권을 개발하는 회사이기 때문에 사용자 앱과 직결되는 모듈은 식사 시간을 피해서 배포한다.

서버 배포는 다음과 같은 방식으로 진행한다.

  1. mRemoteNG 라는 원격접속 툴을 사용해 로그를 확인하여 현재 이용자가 많은 지 파악한다.
  2. FileZilla라는 파일 전송 프로그램을 통해 웹서버에 올라가있는 .war 파일을 로컬 컴퓨터에 백업한다.
  3. Maven을 통해 각종 domain이 존재하는 core 모듈을 clean 후 install 한다.
  4. Maven을 통해 배포하고자 하는 모듈을 clean 후 package 한다.
  5. 배포하고자 하는 모듈의 디렉토리로 가서 target 안에 있는 .war 파일을 FileZilla 프로그램을 통해 웹서버에 배포한다.
  6. mRemoteNG 원격접속 툴로 서버가 잘 배포되어 있는 지 확인한다.

엑셀 다운로드 기능 수정

특정 칼럼을 다른 칼럼에 덮어쓰는 작업을 했다. 이 전에 엑셀 다운로드 기능 개발도 해봤기 때문에 어떤 식으로 코드가 짜여져 있는 지 쉽게 파악했고 정말 금방 해낸 거 같다.

스케줄러 코드 분석

매일 자정에 유효기간이 지난 포인트에 대해서 회수하는 스케줄러가 동작하고 있다. 직접 지시받은 업무는 아니지만 Spring을 사용하여 사이드 프로젝트를 진행할 때 @Scheduler에 대해 궁금증이 생겼어서 코드를 분석해보았다. Scheduler Annotation을 사용할 때 옵션으로 cron 식을 작성하는데 따로 공부해봐야겠다.

또한 Stopwatch Class를 통해 성능을 분석하여 로그에 담는 코드를 보았는데 추가로 Stopwatch Class도 구경해보고싶다. (공식문서 가서 보기!)

쿼리 튜닝

특정 페이지가 굉장히 느리게 동작했다. 어떤 query가 느리게 동작하는 지 궁금했고 해당 페이지에서 사용하는 query를 각각 Datagrip에서 동작시켜 성능을 확인했다. 몇 개의 query 중에 문제가 있는 query를 발견하였으나 직접 튜닝해서 성능을 개선하진 못했다. 요리조리 해봐도 비슷해서 사수에게 여쭤봤는데 답은 정말 간단했다. 아직도 잘 납득이 되지는 않는데, WHERE 절에서 특정 varchar 타입의 column에 대해서 =로 비교해주었는데 =를 LIKE “%?%”로 수정하니 약 4배 이상 시간이 절약됐다. ??????????????????????????????????????????????????????????????????????

사수 분도 정확한 이유는 모르시는 거 같았는데 추정하시기를, 아마 추가한 인덱스가 관련이 있을 거라고 하는데 직접 찾아보라고 하셨다. 꼭 공부해서 사수 분께 아는 척 좀 해야겠다.

결제 로직 순서도 작성

우리 회사는 신세계 기업과 계약이 되어있다. 신세계 직원들은 식사를 위해 우리 회사 앱을 직접 사용하는데, 비슷한 서비스를 하는 ‘오늘의메뉴’라는 앱과 연동해야 할 필요성이 생겨서 기존의 결제 로직을 변경해야 했다. 결제는 굉장히 민감한 작업이기 때문에 정확하게 비즈니스 로직을 파악해야 하고 코드 작성에도 신뢰성에 유의해야 한다. 그래서 사수 분이 결제 로직을 확인할겸 순서도를 그려보라 하셔서 Whimsical 앱을 이용해 순서도를 그렸다.

결제 관련 TABLE ERD 작성

곧 결제 관련해서 새로운 기능들을 개발하기로 예정되어있다. 근데 운영 DB 서버의 TABLE만 200개가 넘어서 어느 TABLE을 건드려야 할 지 감이 잡히지 않는 요구사항들이 많았다. 매번 막히는 게 생길 때 TABLE 관련해서 사수 분께 물어보지 않으려 결제 관련해서 ERD를 작성해야겠다고 마음 먹었고 시간적인 여유가 있을 때 틈틈이 작업했다. draw.io를 사용했으며 논리적 설계, 물리적 설계 각각 나눠서 Diagram을 만들었다.

  • 논리적 설계
  • 물리적 설계

새롭게 배운 점

  • 업무 프로세스의 분석 방법인 AS-IS, TO-BE를 알았다. 용어가 정확히 정의되어 있으니 현 상황을 파악하기 쉬웠고 어떤 요구사항이 들어왔는 지 파악하기 편했다. Santos가 요구사항을 정의해서 전달해줄 때는 이렇게 정확하게 전달해줘서 좋은데 경영팀에서 요구사항을 직접 전달해줄 때는 너무나도 애매모호하다. !@#!@%@#%@#$!@# 같은 일 2번, 3번 하게 되는데 다시 한 번 의사소통의 중요성을 느낀다.
  • 사용자 주요 이용 시간을 피해서 서버 배포하기
  • 현업에서 어떤 식으로 서버를 배포하는 지 알게 되었다. 우리 회사에서는 위와 같은 방식으로 서버를 배포한다!
  • 자바에서는 엑셀 다운로드 기능 개발을 하는 데 코드가 복잡하다. 따라서 엑셀 다운로드 기능을 자주 개발해야하는 경우 각자 입맛에 맞게 커스텀 해서 라이브러리화 시켜 사용하는 것이 더 편하다.

To Study List

  • @Scheduler 동작, Cron Expression
  • Stopwatch를 통한 성능 분석
  • MySQL에서 ‘=’, ‘LIKE’ 동작 원리 및 차이 분석 (Index 관련)
  • ERD 작성 툴 FIX

'Activity > Smart Olive' 카테고리의 다른 글

업무 정리 및 회고 (5)  (0) 2023.04.16
업무 정리 및 회고 (4)  (0) 2023.04.02
업무 정리 및 회고 (2)  (0) 2023.03.11
업무 정리 및 회고 (1)  (0) 2023.03.04
정식 출근 전, 인수인계  (0) 2023.02.28