본문 바로가기

회사10

회사 성능개선 회고 성능개선 회고3주내내 야근하면서 성능개선 회고록그룹장님이 이전에 성능개선을 하면서 쌓은 경험을 들려주시며 그 포인트를 중점으로 성능개선을 진행했다서버(DB 제외) 에서 포인트 3가지가 있다체크해야할 포인트를 3순위까지 정해 비즈니스 로직의 과정을 처음부터 끝까지 분석하며 수정한 내용들을 적어봤다1순위. 루프가 많은경우가장 먼저 해야 할 것은 본인이 성능개선하고자 하는 소스에 루프들을 찾는 것이다.그 후 찾은 루프들 중에 개선할 수 있는 부분을 찾는다특히 중첩루프는 피하는 것이 좋다사례1첫번째 사례는 들어온 데이터 중 기존 데이터가 있는지 판단하는 거였다.문법 무시const list1 = [1,2,3,4,5];const list2 = [1,2,3]; const new_list = [];list1.map(i.. 2024. 9. 22.
라자다 SDK -> REST API 변환하면서 생긴 문제 정리 이번에 회사 프레임워크를 변경하면서 라자다 연동을 바꿨다기존에는 SDK를 쓰다가 신규 프레임워크가 SDK로 불러오는 절차가 불편해져,rest api 로 할 수 있는 방법을 찾아보고 구현 가능해 해당 방식으로 변경하게 됐다 옮겨본 결과 나처럼 정말 불가피안 상황이 아니면 꼭 SDK를 쓰는 걸 택하자..!(rest api로 옮기면서 너무 힘들었다...) 인증 API일단 인증은 문서와 동일하게 작성했지만 계속 오류를 반환해 많이 찾아봤다.그래도 나처럼 비슷하게 한 사람이 있었는데 내가 구현한 방식과 동일했다...참고 : https://jhlee-developer.tistory.com/entry/API-Lazada-%ED%98%B8%EC%B6%9C-%EC%98%88%EC%8B%9C그럼 문제가 뭔지 확인해보기 위.. 2024. 9. 21.
성능개선 동등비교 정리 성능개선하다 궁금한 점 생겨 찾아본 내용을 공유먼저 성능개선 조건을 다음과 같이 받았다(메서드명과 변수명은 임의지정)회사 자체적으로 만든 equals를 쓸 때위처럼 사용하게 되면 이중 반복문이 되어 성능에 영향을 미친다고 아래 방식으로 변경이 필요했다AS-ISforeach{ if(isEquals(data, ['A', 'B', 'C', 'D']){ //doSomething }}TO-BEset = new Set(['A', 'B', 'C', 'D'])foreach{ if(set.has(data)){ //doSomething }}일단 equals가 비교대상목록이 배열로 들어오면 순회하면서 찾는다는걸 알기에 비 효율적인게 맞아 수정 먼저 했다위 소스를 고쳐놓고 "여러개 비교를 할 경우에는 set으로 바꿨지만 .. 2024. 7. 29.
회사에서 인덱스의 중요성 경험한 사례 최근 성능개선 업무를 하던 도중 따로 변한게 없는데 시간이 급격하게 증가했던 일이 생겼다증가했던 원인이 인덱스 여서 실제 몸에 체감되는 경험을 한 사례를 잊지 않기 위해 적어본다 성능개선은 경과시간이 아주 중요한 포인드였다개선 하다 어느 날 이전에 테스트 했던 시간 결과가 큰 차이가 났다90초 걸리던 작업이 124초정도로 34초나 증가했다최신을 잘못받았는지, 소스를 잘못 변경했는지 확인하다가 DB조회 시간이 늘었다는 것을 찾았다.조회 로직은 변한게 없었다.원인을 찾던 중 최근에 인덱스를 추가로 걸었던게 생각났다.덱스를 확인해보니 역시 인덱스가 사라져있었다.기존에 걸려있던 인덱스 명이 있었는데 중복검사 누락으로 인덱스 명이 동일하게 들어갔다.DB 초기화 하면서 기존에 이름이 같은 인덱스가 반영되어 새로운 .. 2024. 7. 3.
네이버 커머스 API 요청량 제한에 따른 카프카 조정 개요 네이버 스마트스토어 오픈 API가 기존 SOAP방식에서 커머스 API로 변경됐다. 변경 기준은 한 회사에서 보내는 요청량 기준으로 변경되면서 기준 제한이 심해졌다. 스마트스토어 커머스 api 요청량 제한 기준 사용하는 api 요청 제한량 1초에 2번 요청을 넘기면 그 이후 요청은 에러가 생겼다. 일단 기업 요청량에 따라 요청량을 변동할 수 있어서 10rps까지 늘렸지만 여전히 부족했다. 그리고 네이버 측에서도 무한정 늘려줄 수 없고 우리 회사측에서 요청량 제한에 맞게 필터링 에러가 안나도록 서버에서 로직 처리가 필요하다고 했다. 회사 서버 구조 회사 서버 구조는 그림과 같다. 서버가 여러 곳에서 카프카 토픽 발행해 쇼핑몰 요청 서버에서 컨슘한다. 거기서 각 컨슘별로 세마포어를 설정해 처리량을 조절해.. 2024. 4. 22.
테스트 프로그램 구현 제안 회고 개요 쇼핑몰 개발 및 유지보수 담당 업무를 하고 있는 와중에 너무 잦은 유지보수와 배포 이후 오류로 인해 지쳐가던 중 이전부터 TDD, 클린 코드 with Java 15기 (NextStep)를 듣게되었습니다. 관련 내용을 들으며 내가 담당한 구조에 적용해보고 싶어 본부장님께 제안을 드렸습니다. 결론부터 말하자면 본부장님과 나의 의견이 어느정도 달랐지만 나의 제안과 테스트 코드 적용을 맘에 들어하셔 포상 휴가를 받을 수 있었습니다. 테스트 프로그램 구현 제안서 아래는 제가 올린 제안 보고서를 가져왔습니다. 현재 쇼핑몰 로직은 계층형 아키텍쳐입니다. 계층형 아키텍쳐는 보통 비즈니스 로직이 서비스 객체에 뭉쳐있습니다. 목표를 원하는 것이 있고 그에 대한 로직들을 구현하게 됩니다. 쇼핑몰 로직을 예시로 들면 주.. 2024. 3. 6.