본문 바로가기

업무 TIL

230621 수요일 업무 TIL

아침부터 비가 온 하루였습니다. 

비가 온지라 몸이 축축 처지지만, 그래도 일을 무사히 끝낼 수 있어서 감사했습니다. 

 

[잘한점] 

상황1) NFT 민팅 일정이 조정되어 Preview 페이지 나가는 것의 일정이 밀렸는데, 이게 어떤 flow로 진행되는지 프론트엔드 팀원에게 질문하였다. 

액션1) 원래는 Preview가 먼저 나오고 > NFT Minting이 진행되는지 알았고 긴가민가해서 담당 팀원에게 물어보니 NFT 민팅이 되고, Preview가 되고 그 다음에 홈페이지 내의 팝업이나 배너가 노출되는 것이었다. 

칭찬1) 긴가민가한 문제였고, 이런 일정을 알고 있어야 우리 서비스의 흐름이 어떻게 흘러가고 어떤 대응을 해야 하는지 팔로업 할 수 있다. 


[개선점]

문제1) 개발 상에 문제가 터지면 예민해졌다는게 나 스스로도 느껴진다. 

원인1) 내가 적용해둔 팝업이 정시에 노출이 되어야 해서 DB상의 UTC 시간을 맞게 설정해두었다. 이전에도 해당 시간에 맞게 팝업이 노출되곤 했는데 이번 팝업은 이상하게 적용이 되지 않는 것이다. 그래서 팝업이 정시에 노출이 되지 않아 다른 팀원들보다 조금 늦은 시간에 팝업이 노출되었다. 나름 나도 로직 검사를 하고 여러 준비를 마치고 정시에 팝업 오픈을 준비한 것이었는데 객관적으로는 준비가 덜 된 것이었다. 

액션플랜1) 관련해서 팝업 자동 노출 로직을 다시 한번 점검해야 할 것 같다. 

 

문제2) 개발DB와 운영DB Sync 맞추는 작업이 중요하다.

원인2) 팀원이 main에 배포를 하면 계속 내가 작성했던 기능이 흰 화면으로 노출되는 문제가 있었다. 나는 내 코드를 건드린게 없는데 왜 자꾸 내것만 다운되지?라는 의구심이 들었다. 그런데 알고보니 내가 개발DB와 운영DB의 Entity 개수를 맞춰두지 않아서(2개정도 차이가 났다) 계속 내것만 다운되어 홈페이지에 노출되는 문제였다. 

액션플랜2) 개발DB와 운영DB의 엔티티 개수를 맞춰주니 해결되었다. 이걸 100% 맞춰야 할 필요는 없지만, 나중을 대비해서 맞춰주면 좋다. 


[배운점] 

배움1) 개발DB와 운영DB의 엔티티 개수를 맞춰주자 

의미1) 개발DB와 운영DB의 엔티티 개수를 맞춰주지 않으면 배포 시에 문제가 생길 수 있다. 그리고 이거는 kubernectl에서 pod를 통해 어떤 엔티티가 없는지 추적이 가능하다. 
그리고 안쓰는 테이블은 즉각즉각 삭제해주자. 안쓰는 테이블을 정리하지 않으면 DB에 부하가 온다. 

 

배움2) 스마트컨트랙트 Audit 프로세스 

블록체인 관련 부서에서 일을 하다보니 스마트컨트랙트의 '오딧'이란 단어를 심심치 않게 듣는다. 이런 오딧 과정이 궁금해서 찾아보았다.

1) 명세 확인 : 백서/백서 발행 이후 개정된 내용들에 대해 정보 수집 과정 등을 말한다

2) 테스트코드 작성 : 모든 예외 상황과 라이브러리들이 올바르게 작동하는지 검증한다

3) 정적 분석 : SWC(Smartcontract Weakness Classfication) -> Typescript의 Speedy Web Compiler 아님 주의 

테스트코드로 컨트랙트에서 취약점이 검출되지 않는지 검사한다 

4) 코드 디자인 리뷰 & 가스 최적화 분석 

5) 보고서 발행 : 보안감사에 걸렸던 코드들을 대상으로 취약점이나 버그 발견 시 이슈 레벨에 따라 분류 등 수정방안을 제시하고 해결 

6) 최종 보고서 발행 : 취약점이 해결된 최종 보고서를 발간한다

-> 스마트컨트랙트는 한 번 블록체인상에 올라가면 수정이 안된다. 다시 새로 작성 후 배포해야 한다 (이에 대한 방안으로 프록시 컨트랙트라는 것이 있다고 하는데 아직은 잘 모르겠다.)

 

배움3) @MessagePattern에서 이벤트 싱크를 맞추는 것이 중요하다.

의미3) 팀원들이 작성한 @MessagePattern 코드를 보니 

async event1 ~ 

async event1Sync ~ 와 같이 이벤트 싱크를 맞추는 함수 또한 작성하여 메시지큐 이벤트를 받는 것에 대한 로직을 작성하였다. 

 

배움4) @Cron -> batch에 적용한다 

의미4) @Cron(CronExpression.EVERY_HOUR)와 같이 작성하는데 여기서 EVERY_HOUR에 들어가는 부분은 

EVEVRY_5_MINUATE 등 원하는 시간이나 날짜로 작성이 가능하다. 그리고 { } 안에 this.eventClient.emit으로 batch 이벤트를 발생시킨다. 

'업무 TIL' 카테고리의 다른 글

230623 금요일 업무TIL  (0) 2023.06.25
230622 목요일 업무 TIL  (0) 2023.06.22
230620 화요일 업무TIL  (0) 2023.06.22
230619 월요일 업무 TIL  (0) 2023.06.20
230616 금요일 업무TIL  (0) 2023.06.18