본문 바로가기

전체 글

(83)
다중 WAS 환경에서 Ehcache 캐시 불일치 문제 해결 운영 중인 홈페이지에서 팝업을 등록하거나 수정했는데 사용자마다 서로 다른 결과가 나타나는 문제가 발생했다.어떤 사용자에게는 새로운 팝업이 정상적으로 표시됐지만, 다른 사용자에게는 표시되지 않았다.처음에는 브라우저 캐시나 쿠키 문제라고 생각했지만, 원인은 다중 WAS 환경에서 발생한 Ehcache 캐시 불일치였다. 1. 문제 상황발생한 증상은 다음과 같았다.관리자에서 팝업을 등록해도 일부 사용자에게만 표시됨브라우저 캐시 삭제나 시크릿 모드에서도 문제가 재현됨관리자에서 메모리 초기화를 실행하면 정상화되는 경우가 있음약 하루가 지나면 별도 조치 없이 정상화됨로컬 개발 환경에서는 정상 동작함특히 같은 URL에 접속하는데도 사용자마다 결과가 달랐다.브라우저 문제라면 캐시를 삭제하거나 시크릿 모드로 접속했을 때 해..
이해하지 못하면 내 코드가 아니다 최근 예약 재신청 페이지의 성능 문제를 수정하면서 느낀 점이 있어 기록해 본다. 문제 상황예약 재신청 페이지에서 테니스 종목은 빠르게 조회되는데 헬스 종목은 약 10배 정도 느리게 조회되는 문제가 있었다.원인을 확인해 보니 정원 확인을 위해 조회하는 결제 데이터가 문제였다.테니스에 비해 헬스는 결제 데이터가 훨씬 많았고 이 데이터를 처리하는 과정에서 시간이 오래 걸리고 있었다.이를 해결하기 위해 AI에게 기존 쿼리의 성능 문제를 분석하고 리팩터링해 달라고 요청했다.AI는 결제 데이터를 별도의 임시 테이블로 구성하고 JOIN하는 방식으로 쿼리를 수정했다.수정 후 테스트에서는 조회 속도가 개선된 것을 확인했고, 작업을 마무리했다. 다음 날 발생한 문제다음 날, 개선된 줄 알았던 페이지가 다시 느려졌다는 이야..
다중 WAS 환경에서 Ehcache 캐시가 서로 달라 발생한 문제 해결 1. 문제 상황운영 중인 웹 서비스에서 팝업을 등록하거나 수정했는데 사용자마다 결과가 다르게 보이는 문제가 발생했다.증상은 다음과 같았다.관리자에서 팝업을 등록했는데 어떤 사용자는 바로 보임다른 사용자는 동일한 팝업이 보이지 않음메모리 초기화를 하면 정상적으로 보이는 경우가 있음일정 시간이 지나면 별도 조치 없이 정상적으로 보임개발 환경에서는 문제가 발생하지 않음처음에는 브라우저 캐시나 쿠키 문제를 의심했다.하지만 시크릿 모드, 브라우저 캐시 삭제 등을 테스트해도 특정 환경에서는 계속 이전 데이터가 조회됐다. 2. 원인 확인운영 환경은 WAS가 한 대가 아니라 다음과 같이 여러 WAS가 Load Balancer 뒤에서 동작하는 구조였다. Load Balancer ..
Java UnsupportedClassVersionError 원인과 해결 방법 - class 파일 컴파일 버전 확인 운영 중인 Tomcat 서버에 수정한 Java .class 파일을 배포한 뒤 홈페이지가 정상적으로 출력되지 않는 문제가 발생했다.처음에는 수정한 Java 코드에 문제가 있다고 생각했지만, Tomcat 로그를 확인해보니 원인은 개발 환경에서 컴파일한 Java 버전과 운영 서버의 Java 버전이 맞지 않았기 때문이었다.이번 글에서는 UnsupportedClassVersionError가 발생하는 이유와 .class 파일의 Java 버전을 확인하고 해결하는 방법을 정리한다. 1. 발생한 오류Tomcat 로그에서 다음과 같은 오류가 발생했다.java.lang.UnsupportedClassVersionError:com/example/web/CustomTag​ 실제 로그는 대략 다음과 같은 형태로 나타난다.Servl..
Node로 양방향 연결 리스트 구현하기 Java에서 연결 리스트를 직접 구현하려면 데이터를 저장하는 Node 클래스와 노드 사이의 연결을 관리하는 메서드가 필요하다.일반적인 양방향 연결 리스트의 노드는 다음 정보를 가진다.실제 데이터이전 노드를 가리키는 prev다음 노드를 가리키는 nextclass Node { // 노드에 저장할 실제 값 int value; // 이전 노드 Node prev; // 다음 노드 Node next; /** * 기본 생성자 * * head, tail처럼 실제 데이터를 저장하지 않는 * 더미 노드를 만들 때 사용할 수 있다. */ public Node() { } /** * 데이터를 저장하는 노드를 생성한다. */ ..
DB Lock Session 조회 및 종료 방법 정리 문제 상황운영 중 특정 기능이 갑자기 느려지거나 저장, 수정, 삭제가 되지 않는 경우가 있다.이때 원인 중 하나로 DB Lock을 의심할 수 있다.대표적인 상황은 다음과 같다.UPDATE, DELETE 쿼리가 끝나지 않음특정 테이블 저장이 계속 대기 상태트랜잭션이 종료되지 않아 다른 세션이 대기배치 또는 관리자 기능 실행 후 화면 응답 지연Lock은 데이터 정합성을 위해 필요한 기능이지만 트랜잭션이 비정상적으로 오래 유지되면 장애로 이어질 수 있다. 1. Oracle Lock Session 조회Oracle에서는 V$LOCKED_OBJECT, V$SESSION, DBA_OBJECTS를 조인하여 Lock이 걸린 객체와 세션 정보를 확인할 수 있다.SELECT S.SID, S.SERIAL#, ..
Tomcat 세션이 간헐적으로 풀리는 문제 원인 분석 Set-Cookie를 직접 설정하다가 세션 쿠키가 깨진 사례운영 중이던 홈페이지에서 이상한 문제가 발생했다.관리자 로그인 후 페이지 이동 시 로그아웃게시판 글쓰기 진입 시 세션 끊김공지사항 진입 중 간헐적 로그아웃로컬 환경에서도 동일 증상 발생처음에는 단순 세션 타임아웃 문제인 줄 알았다.하지만 로그를 추적해보니 원인은 전혀 다른 곳에 있었다. 증상처음 로그인 직후에는 세션이 정상적으로 유지되었다.FMCSSESSIONID=B9D1F35A...sessionId=B9D1F35A...sessionDataNull=false 하지만 특정 페이지 이동 이후 기존 세션 ID와 다른 새로운 세션 ID가 생성되었다. COOKIE BEFORE : locale=pt-BRSESSION ID AFTER : D9717813....
1장. 파운데이션 모델을 활용한 AI애플리케이션 입문 1.1 AI 엔지니어링의 부상2020년 이후 AI를 설명하는 핵심 키워드는 규모다.모델은 점점 커졌고 더 많은 데이터를 사용했으며, 더 많은 컴퓨팅 자원을 필요로 하게 되었다.그 결과 두 가지 현상이 생겼다.모델이 강력해져서 더 많은 작업을 수행할 수 있게 되었다.모델을 직접 학습시키는 비용이 너무 커져서 소수의 대기업만 직접 모델을 만들 수 있게 되었다.그래서 등장한 방식이 Model as a Service, 즉 모델을 서비스처럼 API로 사용하는 방식이다.이제 개발자는 직접 모델을 학습하지 않아도 OpenAI, Google, Anthropic 같은 회사가 만든 모델을 API로 사용할 수 있다.이 변화로 인해:AI 애플리케이션 수요 증가개발 진입 장벽 감소다양한 서비스 등장이라는 결과가 나타났다.1.1..