본문 바로가기

전체 글67

이더리움 이벤트 구독 웹소켓 재연결하기 이더리움 노드에서 이벤트를 구독할 때, 연결한 웹소켓이 주기적으로 끊어지는 이슈가 발생한다.이벤트 구독의 동작 프로세스에 대해 파악하고, 연결이 끊기는 경우와 대응 프로세스에 대해 알아보고자 한다. 이더리움 Event 구독 프로세스Web3j는 Java 애플리케이션이 이더리움 노드들과 통신할 수 있도록 도와주는 라이브러리이다. 이 라이브러리는 JSON-RPC 프로토콜을 사용하여 통신을 수행한다.통신 방식으로는 HTTP와 WebSocket을 지원한다. 이 중 WebSocket 방식은 먼저 커넥션을 설정한 후, 라이브러리 내부에 설정된 blockTime 간격으로 지속적으로 요청을 보낸다. blockTime의 기본 설정 시간은 이더리움 블록체인의 블록 생성 시간인 15초이다.  public void run.. 2024. 8. 10.
Java 멀티 스레딩 및 성능 최적화(1) 개요와 운영 체제 기초 Why we need Threads Responsiveness 높은 응답성은 애플리케이션에 꼭 필요한 가치이다. 동영상 플레이어에서 재생을 하며 동시에 마우스 커서를 움직이는 것이 멀티 스레드의 예이다. Concurrency = Multitasking CPU가 여러 스레드를 순회하며 멀티 테스킹을 하는 것을 Concurrency라고 한다. 이를 통해 여러 작업을 동시에 수행하는 것 같은 착각을 일으킨다. Concurrency를 위해 많은 코어가 필요하지 않다. 싱글 코어로도 멀티 스레드가 가능하다. Preformance 멀티 코어로 일을 하면 당연히 더 많은 일을 할 수 있지만, 멀티 스레드를 이용하면 필요한 코어의 개수(혹은 컴퓨터의 개수)를 줄일 수 있다. What thread.. 2023. 8. 28.
API 요청 통제 기술 API Gateway API Client와 Server 사이 구간에 위치하여 다양한 목적으로 사용되는 역할을 한다. API Gateway 도입 이점 인증 및 권한 부여 서비스 검색 통합 응답 캐싱 정책, 회로 차단기 및 QoS 다시 시도 속도 제한 부하 분산 로깅, 추적, 상관 관계 헤더, 쿼리 문자열 및 청구 변환 IP 허용 목록에 추가 API Throttling API 요청에 속도와 횟수를 제한하는 것을 말한다. DoS(Denial of Service)와 같은 공격에 방어하기 위해서 필요하다. Scale Out을 통해 서버 자원을 확장하는 비용이 API 제공으로 얻는 금액보다 클 경우, API Throttling 도입을 통해 SLA(Service Level Agreement)에서 협의 대상으로 삼을수.. 2023. 8. 24.
Spring Boot에서 Logback(+ CloudWatch에 기록하기) 로깅 로그를 사용하는 목적에는 에러나 장애가 발생할 때 해당 내용을 파악하기 위함과 사용자 로그를 분석 데이터로 활용하기 위함이 있다. 콘솔에서 출력되는 로그는 로그 수준을 높이거나 낮추는데 그 목적이 있고, 에러나 장애 혹은 로그 분석을 위해선 로그를 파일에 저장한다. 스프링에서 로깅 초기 스프링은 JCL(Jakarta Commons Logging)을 사용해서 로깅을 구현했다. 요즘에는 대표적으로 Log4j와 Logback으로 스프링 부트의 로그 구현체를 사용한다. Logback은 log4j 이후에 출시된 Java 기반 Logging Framework 중 하나로 가장 널리 사용되고 있다. slf4j의 구현체이며 Spring Boot 환경이라면 spring-boot-starter-web 안에 spring.. 2023. 8. 23.