오류발생과 해결 6

왜 접속이 되지 않는걸까요.. 나의 작은 타임리프 (2) - 마무리(Sticky Session)

문제 설명왜 나의 타임리프엔 접근할 수 없을까요?사용자의 요청이 들어오면 Load Balancer(로드 밸런서)에 의해 여러 대의 서버로 이동하게 됩니다.예를 들어 2개의 서버로 구성된 인프라 환경이 있다고 가정한 후 시나리오를 작성해보겠습니다.A서버의 로그인 요청 → A서버에서는 로그인 성공이라는 응답동일한 클라이언트는 로드 밸런서에 새로운 요청을 보냄새로운 요청은 B 서버로 전달B 서버에선 로그인 한 사용자의 정보가 없기에 어플리케이션에서 설정한 특정 페이지로 리다이렉트 하도록 응답을 보냅니다위의 시나리오처럼 접근이 됐다, 안됐다 하는 이유는 요청에 관한 클라이언트의 정보를 판단할 수 없기에 발생하는 문제라는 것으로 접근했고 해당 가설을 검증하기 위해 아래와 같이 테스트를 진행했습니다.가설 검증 시나..

왜 접속이 되지 않는걸까요.. 나의 작은 타임리프

문제 상황가장 먼저 식별한 문제인 thymeleaf에 접근이 되지 않는 현상캐시를 지웠다가 할 땐, 간헐적으로 화면이 보이긴 하나 css가 적용되지 않거나 계속해서 페이지가 리다이렉되서 많은 요청이 발생하는 문제 식별, 어디에선 됐다 어디에선 안됐다 와 같은 문제 반복해서 발생고민 및 해결을 위한 시도고민 1) 앞서 해결 방법으로 강구한 인증서 문제 → 인증서 정상고민 2) nginx 문제 혹은 도메인 문제 → x고민 3) 로드밸런스 문제 → x고민 4) 서버 상태 문제 → actuator api 정상 호출고민 5) 어플리케이션 설정 확인 → 문제 식별 (또 다른 문제 -해당 문제 해결 후 로그인이 정상적으로 되지 않는 이슈)고민 6) 운영 도메인, nginx, load balancer와 같은 문제에 포..

뜬금없이 발생한 Too Many Connection

문제 상황 :k8s에 의해 N개의 파드, previw 서버, 레플리카, 오토 스케일링 등등의 운영 환경 배포 상황에서 관리자 모듈을 빌드 및 오케스트레이션 하는 과정에서 커넥션이 다수 발생해서 설정된 DB 커넥션의 한계치를 넘어버리는 상황추가 설명 : (멀티 모듈의 상위 모듈은 하위 모듈이 가지고 있는 의존성들의 커넥션의 총 합을 갖게 됨..)어플리케이션의 actuator가 헬스체크도 제대로 못할 뿐더러 rds에서 생성한 db 의 max_connection의 임계치까지 도달해버려 로컬에서 DB 접속이 불가해지고, 물론 파드에 문제가 발생하는 현상 식별멀티 모듈 형태의 아키텍처를 가지고 있는 어플리케이션에서 **관리자 모듈(**Admin)을 운영 환경에 배포해야하는 상황에서 발생한 문제고민한 내용 그리고 ..

[Error] QueryExecutionRequestException : Not supported for DML operations

직접 @Query 파라미터를 통해 데이터를 지우려고 했을 때, 발생한 Error로 쿼리유형이 잘못 동작했을 때 발생하는 타입이다. 이를 해결하기 위해서는 해당 query 메서드를 실행한 곳에 2개의 어노테이션을 추가해줘야 한다 @Modifying @Transactional @Modifying 메서드는 Query 어노테이션으로 작성된 insert나 update, delete 쿼리를 사용할 때 필요로 한다 (주로 벌크연산을 하나의 쿼리로 수행할 때 사용 ) 벌크 연산 관련 참고자료 :( https://data-make.tistory.com/617 ) @Modifying 공식문서 ( https://docs.spring.io/spring-data/data-jpa/docs/current/api/org/spring..

2번째 맞닥드린 오류 : could not prepare statement (DB 관련 오류)

앞서 책을 통해 프로젝트를 진행중 JPA 파트에서 테스트 코드를 작성하다가 보면 분명히 오류가 발생할 것이다. 오류가 발생하는 지점은 콘솔 쿼리 로그를 확인할 때, 설정하기 전에는 H2의 쿼리 문법이 적용되어 id bigint generated by default as identity 라는 쿼리문을 확인할 수 있다. 이 쿼리를 MYSQL의 쿼리문으로 확인하기 위해서는 다음과 같은 코드를 application.properties에 설정을 해야 하는데, spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 이 쿼리문을 추가하게 되면 발생하는 오류가 윗 오류인데, posts 테이블이 존재하지 않아 쿼리문을 넣을 수 없..

오류명 : java.lang.assertionerror: status expected:<200> but was:<401> 및 소스 코드의 변경, 부제 : 스프링 부트와 AWS로 혼자 구현하는 웹서비스 -저자: 이동욱

정보처리기사 필기가 무사히 끝이나고 다시 스프링 부트 공부를 해보려고 책을 열었다. 본가에서도 해결하지못한 오류를, 학교에 와서 곰곰히 생각해보고 해결한 과정을 한 번 설명하고 어떻게 해결했는지, 뭐가 문제였던건지 나름의 분석을 해보려고 한다. 일단 우선 해당 이 책은 출판된지가 어느덧 3년을 향해 달려가고 있다. 그 사이에는 많은 버전이 업데이트 되었고, 다양한 기능들이 추가되고 삭제되며 코드가 변하기 충분하였다. 앞서 작성한 글 중에 compile과 implement처럼, 책의 버전을 그대로 사용함으로써 코드를 따라가는 것도 좋지만, 나는 그래도 최신버전으로 업데이트 된 상황으로 코드를 작성해보고 싶어서 지속적으로 찾아보고, 코드를 수정해 나아갔다. 일단 우선적으로 제가 실습환 환경은 다음과 같습니다..