어제 몸살로 인한 오후 반차를 썼었는데
반차를 낸 사이에 유지보수건이 두개나 들어와 있어서 오자마자 해당 내용을 진행했다.
하나는 인터페이스 누락 부분이었는데 모두 정상 진행이었지만
값들이 딱 요청온 3개만 누락된 것을 보면 그 시간동안 SAP쪽에서 문제가 발생한 것으로 추정되는데
안타깝지만 로그가 찍혀 있지 않아 원인을 파악할 수 없었다.
해당 부분의 로그를 확인해보니 이전 요청사항 처리 때
다른분이 개발서버에서 수정된 코드가 넘어오는 과정에서 누락된 것으로
들어온 값 그대로 내부적으로 발송하니 정상 값이 들어왔기 때문에 요청사항은 처리되었고
로그도 운영에 다시 반영했기 때문에 다음에는 원인을 정확하게 파악할 수 있게 됐다.
다른 유지보수 요청사항은 필드 추가였는데
예전에는 1~2달에 한번정도 요청한 것에 비해서 주기가 좀 많이 잦아진 것 같지만
요청온 필드명에 따라 개발/운영에 해당 필드를 추가한 다음
원하는 레이아웃대로 필드를 수정해서 전달하고
SAP에서 인터페이스 전송 형태를 알려줄 때까지 다른 작업을 시작했다.
상당히 복잡하게 여러 개체들이 엮여있는 인터페이스의 경우
어제 해당 개체의 틀은 받았지만 Order처럼 복잡한 관계였기 때문에
먼저 Order의 구조를 조금 더 확인했다.
해당 인터페이스의 부모인 개체의 Wrapper 부분을 완료하고
추가요청 필드에 대한 정보를 받아서 인터페이스 진행, 운영 배포 및 작동 테스트를 완료했고
마이그레이션 요청을 고객사로 받았기 때문에 SAP에 재전송 요청을 보냈다.
이 부분은 아쉬운게 퇴근 전에 확인해보니
해당 내용들은 일괄적으로 관련 필드의 값이 변형된 부분이었기 때문에
SFDC 내부에서도 한바퀴 돌리면 처리할 수 있었는데
그 사이에 변경된 데이터가 있을 수 있으니 전부 받아야 한다고만 생각해서 요청한게 아쉬웠다.
유지보수가 또 날아왔는데 이번에도 SAP쪽 문제로 timeout이 발생했던 것을 확인했고
해당 내용을 정리해서 SAP에 발송 후 정상 작동을 확인하고 마무리했다.
중간에 Trigger 내부에서 Callout이 되지 않는 문제에 대한 질문을 받았는데
이전에 P프로젝트에서 트리거를 통해 변경된 값을 감지하고
해당 레코드에 관련된 데이터를 전송해야 하는 인터페이스를 개발한 적이 있어서 답변할 수 있었다.
하지만 잠시 뒤 trigger class 에러에 관한 질문을 다시 하셨는데
trigger .run() 방식을 사용하지 않고 트리거 내부에서 작동하셨던 문제로
triggerHandler를 통해 .run()으로 트리거 관리할 수 있는 방법을 전달드렸다.
해당 내용의 설명이 부족했던건지 .run()으로 실행한 다음
run에 해당하는 클래스 내부에 있는 메서드를 트리거에서 실행시키셨는데
해당 부분에서 에러가 또 발생해서 해당 부분에 대한 설명을 해드려서 정상 작동하는 것을 확인했다.
그 뒤로 인터페이스 팀원분이 모여서 뭔가를 토의하셔서 가보니
callout의 경우 단건이 아니라 모아서 보내야 한다는 내용의 대화였는데
생각해보면 당연히 단건이 아니어야 할 것 같지만
고객사에서 여러건을 한번에 받는지가 더 중요하기 때문에 해당 내용을 확인해봤다.
안타깝게도 insert의 경우 key 식별이 되지 않기 때문에
한번에 여러개의 개체가 엮인 데이터를 여러개 보내기에는 구조가 이상했고
update의 경우에도 예시로 postman 발송을 해봤지만
단건을 보낼 때는 성공하던 메세지가 2건 이상을 보낼 경우 단건의 결과만 출력했다.
이 부분은 고객사에 문의하기로 하고
해당 부분을 묶어서 보낼 때 처리하는 방법에 대해 간단히 이야기 하다 종료됐다.
인터페이스의 자식개체 또한 Wrapper 세팅을 완료하고
Order의 구조를 조금 더 확인하다가 정리 후 퇴근했다.
(1).백준 29729번 가변 배열은 배열의 사이즈가 가변적이라고 할 때
현재 배열의 사이즈와 계속 증감되는 데이터의 개수를 통해 최종 배열의 사이즈를 출력해야 하는 문제였다.
배열이 감소하는 조건은 없었기 때문에 계속적으로 배열 내부 값의 개수를 추적하며
사이즈보다 커질 경우에만 배열의 사이즈를 2배로 증가시킨 후 출력하는 방식으로 해결했다.
const input = `1 5 1
1
1
1
1
0
1`.split('\n')
let count = 0
let size = Number(input[0].split(' ')[0])
for(let i = 1 ; i < input.length ; i++){
if(input[i] == 1){
count++
}
else{
count--
}
if(count > size){
size *= 2
}
}
console.log(size)
'회고' 카테고리의 다른 글
[개발일지] - 296(주말) (1) | 2024.04.21 |
---|---|
[개발일지] - 295(주말) (0) | 2024.04.20 |
[개발일지] - 293 (0) | 2024.04.18 |
[개발일지] - 292 (0) | 2024.04.17 |
[개발일지] - 291 (0) | 2024.04.16 |