출근 75일차

·2022년 12월 11일
0

회사이야기

목록 보기
12/50

오늘은 삽질을 많이 했던 날이다.

그리고 건설적인 이야기도 많이 나왔던 날.

운영업무, 줄이고 싶어요

라고 이야기를 꾸준히 말해서 일주일이라는 시간을 받았다.

그러면서 리더님께서 정리를 해주셨는데 이게 묘한 괴리가 발생했다.

현재 매니지먼트 및 인프라를 관리하고 계신 리더님과
실제로 업무를 보고 있던 개발자들의 정보가 다른 것.

그래서 조금 더 디테일한 자료를 만들기 위하여 노션에 디테일을 추가해놨다.

원래는 현재 작업현황만 적혀있었지만 두가지를 추가했다.

1. 발생 빈도수
2. 작업 권한을 가져야하는 사람

이렇게 조금 더 명확하게 체크를 해놓고, 계속 줄여나갈 예정이다.

아 그리고 여기서 중요한 이야기를 하나 들었다.

현재 운영 업무 중에서는 2가지의 갈래가 존재한다.

  1. 단순한 조작으로 수정이 가능한 일감
  2. 데이터베이스를 직접 건드려야만 하고 복잡한 일감

이렇게 두가지로 나눠져있는데, 이 중 2번에 속하지만 1번에도 속하는 것들이 상당히 많았다.

그렇다보니 이것을 분류할 수 없어서 개발자들이 직접 일감이 많았는데

출근을 해서 CTO님과 대화를 하다가 나온 이야기가 있었다.

80에서 100을 만드는 것이 0에서 80을 만드는 것 보다 어려우니까
단순한 업무같은 것은 빈도수를 줄이기 위해서라도 만들고, 복잡한 업무는 차차 제거하는 방향성이 좋다고

그래서 일단 간단하게 처리할 수 있는 다양한 것들은 제거하고, 복잡한 것들은 열심히 고민을 해서 제거하는 방향으로 갈 것 같다.

뭔가를 만들어달라했는데, 대충 이야기하면 지금까지 API 콜 횟수를 체크해달라는 요청을 받았다.

현재 회사에서는 엘라스틱서치를 활용하여 어떤 API가 호출됐는지 모두 체크를 하고 있다.
어떤 유저가, 어떤 입력값으로 호출했는지를 파악하여 에러핸들링을 할 때 디테일을 보는 목적으로

겸사겸사 어떤 API가 일마다 몇회씩 호출이 되었는지 파악을 해달라는 요청을 받아서
어 그거 별거 아닐 것 같은데 금방 하죠 ㅋㅋ 라고 받아왔는데 정말 2일만에 끝내버렸따(?)

엘라스틱서치의 기능 중에는 aggregation 라는 SQL의 Group By와도 비슷한 함수?가 있다.

이것을 활용하면 여러가지를 그룹핑하여 체크를 할 수 있는데
나같은 경우에는 매일 단위로 체크를 해서, 하루에 몇회를 호출했는지를 알아보는 방식으로 사용했다.

자세한 코드는 공개할 수 없기에 일부만 공개하지만, 이정도면 얼추 필요한 것을 구현할 수 있으리라 생각한다.

예시 코드

     const document = await this.elasticsearchService.search({
        size: 0,
        query: {
          range: {
            '@timestamp': {
              gte: '2021-01-01',
              lte: '2022-12-30',
            },
          },
        },
        aggs: {
          group_a: {
            // 여기서 빌트인 메소드를 사용한다. 매일매일 단위로 구분하며, 어떤 형식으로 표기할지 정한다.
            date_histogram: {
              field: '@timestamp',
              calendar_interval: 'day',
              format: 'yyyy년MM월dd일',
            },
            // aggregation같은 경우에는 1개의 조건만 사용할 수 있어, 이렇게 그룹의 그룹같은 형식으로 사용해야한다.
            aggs: {
              group_b: {
                filter: {
                  bool: {
                    must: [
                      // 이와같이 filter, bool, must 옵션을 걸어버리면 and 조건으로 설정되어 명확한 구분을 할 수 있게 된다.
                      {
                        match: {
                          env: 'prod',
                        },
                      },
                    ],
                  },
                },
              },
            },
          },
        },
      });

그럼 여기서 문제가 있다.

이 자료를 보기 위해서 무엇을 해야하냐?

엑셀을 만들어야지

엑셀을 만들어보자

엑셀을 만들때는 라이브러리를 활용해야하는데, 주로 https://www.npmjs.com/package/xlsx 이것을 사용하고 있다.

데이터는 이중배열의 형태로 넣으면 되는데 대충 이런느낌

const data = [
  [1,2,3,4,5,6,7],
  ["가","나","다","라","마","바","사"],
  ["아","자","차","카","타","파","하"]
]

그리고 나머지는 이렇게 하면 된다.


const workBook = XLSX.utils.book_new();
const worksheet = XLSX.utils.aoa_to_sheet(data);

XLSX.utils.book_append_sheet(workbook, worksheet, '테스트');
XLSX.writeFile(workbook, path.join('./', '엑셀테스트.xlsx'));

읽어서 데이터를 수정하고, 다시 저장하는 것도 해보고 싶은데 이건 조금 찾아보고 있다(ㅋㅋ)


아무튼 이렇게 요구사항이 들어온 것을 이틀만에 정리하고 다른 것을 좀 해야겠다.

최초에 작성되었던 재고 관련된 코드를 건드려야하는데, 이게 정말 잘 건드려야해서...
한번 디테일하게 정리를 해봐야겠다.

  • 출고 프로세스에 대한 것도 추가적으로 기획해보고 있는데 잘 될지는 모르겠다

잘 만들어져서 프로덕션에 붙일 수 있으면 좋겠다 !

profile
물류 서비스 Backend Software Developer

0개의 댓글