2023년 5월 29일 월요일

ICM(Internet Communication Manager)이후에 요청이 누락되는 경우가 있을까?

"클라이언트의 외부(HTTP,HTTPS 등)에 대해 ICM에서 정상적으로 이력이 확인이 되지만 그 이후 처리에 대해 누락(메시지모니터링 로그없음 등)이 생기는 경우가 있을까?" 라는 의문을 통해 관련내용에 대해 정리를 하게 되었습니다.

결론은

'ICM으로 수신되는 호출이나 그 이후에 처리에 대해 누락이 생기는 경우가 있다' 라고 생각하고 있는데 ICM안의 구성(라우팅 등)이나 서버오류, 네트워크 문제 등으로 누락되는 현상이 발생될수 있을것 같습니다.

먼저 ICM 특징이나 역할을 보면

  • 외부시스템과의 통신을 담당하는 SAP NetWeaver구성요소
  • 외부요청을 처리
  • HTTP,HTTPS 등 프로토콜 통신을 위해서 ICM이 필요
  • 클라이언트(외부통신)요청에 대한 로깅 및 모니터링 등 가능
  • URL 요청에 대한 리디렉션,응답을 진행
  • Internet Communication Manager(ICM) 내용 참고

비슷한 역할을 하는 Web Dispatcher는

  • 서버 앞(ICM 등)에 배치되는 로드밸런서
  • HTTP 등 요청에 대해 네트워크 트래픽을 분산하는 역할
그외
TCP/IP연결과 같은 네트워크 전송계층에 작동되는 L4로드밸런서는 IP주소와 포트번호로 패킷을 분배한다고 하며 웹 디스패쳐는 HTTP같은 응용계층에 작동된다고 보입니다.
"L4 → Web Dispatcher → ICM 이런순인건가?"

SAP PO가 자바싱글로 사용된 후로 잘 듣지 않게 된 용어인 

ICM는 인터넷 통신 프레임워크이며 ICM과 HTTP를 활성화한 ABAP애플리케이션 간 중개자 역할을 하며 SMICM티코드는 ABAP스택의 ICM을 모니터링하고 관리하기 위한 트랜잭션 코드인데 오래전 PI의 듀얼스택에서 연결셋팅이나 확인 시 들어갔던 화면이였습니다.

여기까지 제가 알고싶어 했던 SAP PO에서의 ICM 경유 후 처리에 대해서는 별로 알아내지 못했지만 아래 사이트에서 어느정도 ICM 처리 시 요청에 대한 누락 가능성이 보이는 그림과 내용은 볼수 있었던것 같습니다.
Requeset Handling in CE using the FCA 참고

여기서 'FCAServerThreadCount'라는게 보이며 HTTP작업자 스레드의 최대 수라고 하는데 이것때문에 누락 가능성이 있는건지 아직은 모르겠습니다.

하지만 이 사이트에서 뭔가 결정적인 힌트를 얻은것 같습니다.
여기서 볼수 있는 MPI(Memory Piper)는 ICM과 AS ABAP,JAVA 간에 FCA(Fast Channel Architecture),Node 통신하는데 사용되는 메모리 기반구조라고 하며 Web Dispatcher과 ICM간의 통신에도 사용된다고 보입니다.

이해되는 내용을 적어보면

  • FCA는 FIFO큐 역할을 하는 또 다른 MPI역할
  • 요청을 처리할수 있는 서버노드의 특정 FCA큐로 요청을 푸시
  • 서버노드에 대해 각 각 FCA대기열을 갖게됨
  • 자바서버노드가 ICM공유메모리에 FCA대기열을 생성
  • HTTP요청이 FCA에 도달 시 자바서버노드는 해당 요청을 대기열에서 스레드로 가져와 처리
  • 자바서버노드의 FCA스레드나 HTTP워크스레드라고 함

해당 FCA대기열 실제로 확인하는 방법에는 ICM웹어드민 페이지나 명령어 icmon을 사용하는 방법이 있다고 하는데 어렵네요.

제가 이해한 자바서버노드의 HTTP Worker스레드나 큐까지(메시지모니터링에 보이는단계) 도달하기 위해서는 전방적으로 MPI,FCA의 비중이 커보이는데 대체 너희들 정체가 무엇이냐..

이전에 작성한 관련 글입니다.

댓글 없음:

댓글 쓰기

최근글

9월 태안~천안 아이와 3박4일 가족 여행지