Etc21 동시성 제어 기법에 관하여.. Concurrent Control Report목차동시성 제어란?동시성 제어 기법Application LevelDB LevelRedis Distributed LockKafka동시성 이슈 발생 시나리오와 해결방법포인트 충전결제좌석 예약 동시성 제어란?동시성 제어란, 서비스 운영 중 여러 쓰레드가 동일한 자원에 접근하여 사용할 때 발생할 수 있는 이슈들을 관리하고 해결하는 기술적 방법을 의미합니다.이는 자원 충돌, 데이터 불일치, 중복 처리 등으로 인해 서비스의 안정성과 신뢰성이 저하되는 문제를 방지하기 위해 필수적입니다.예를 들어, 명절 기차표 예매 서비스에서는 많은 사용자가 동시에 같은 좌석에 예매를 시도하는 경우가 발생합니다.만약 동시성 제어가 구현되지 않은 경우, 여러 사용자(쓰레드)가 동일한 기차표 .. 2025. 2. 12. 스프링 부트 커넥션 풀로 인한 서비스 장애 Jmeter와 서비스 성능테스트를 설명하기 앞서, 해당 툴과 테스트를 진행하게 된 계기에 대한 설명을 하고자 한다!! 최근, 사내 서비스를 개발/운영하는 도중에 갑작스럽게 장애가 발생한 적이 있다. 서비스 인프라 구축은 아래와 같이 3개의 WAS서버가 1개의 DB서버와 통신하고 있다. 그런데, 갑자기 웹과 모바일에서는 DB와의 통신이 잘 이루어지는데 갑자기 백오피스 WAS가 DB와의 커넥션이 안되는 것이다ㅠㅠ... 부리나케 팀에서는 백오피스 에러 로그를 뒤지기 시작했고... 에러 로그는 다음과 같았다. org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is j.. 2024. 3. 7. IntelliJ 단축키 자주 쓰는 IntelliJ 단축키 Main Method Shift + F10 : 메인 메서드 실행 수정 Ctrl + D : 선택 영역 복사 후 붙여넣기 Ctrl + X : 잘라내기 Ctrl + / : 한 줄 단위 주석 처리 Ctrl + Shift + 방향키 : 블록 단위 코드 이동 Ctrl + Alt + L : 자동 코드 포맷팅 Ctrl + Alt + O : Import 정리(정렬 및 미사용 import 삭제) Shift + F6 : 변수명 전체 변경 검색 Shift + Shift : 전체 파일 및 코드 조회 자동완성 Alt + Enter : 자동 Import 및 Quick Fix Ctrl + Alt + V : 반환 타입 및 변수 자동 생성 Ctrl + Alt + M : Extract Method 자동 .. 2024. 2. 1. MyBatis - <![CDATA[]]>란 무엇인가?? 이번에 새롭게, 프로젝트 유지보수를 담당하게 되어서, 코드를 해석하던 중에 MyBatis의 쿼리문이 라는 태그로 감싸져 있는 것을 발견하였다. 필자는, 마이바티스 자체를 프로덕트 레벨에서 사용한 것이 아니라, 간단하게 미니 게시판 프로젝트 정도에 이용해본 경험만 있어서 그리 해당 기술에 대한 이해도가 높지 않았다.. :) (한 마디로 그냥 진짜 찍먹만 해봤다.. 라는 뜻..) 그래서 해당 소스코드를 보고 궁금해서 인터넷에 찾아보고 알아보니 아주 중요한 부분이라 블로그로 남긴다. 의 의미 는 간단히 말해서, 해당 태그 내부의 값들을 문자열로 인식한다는 의미이다. 사용 이유 아래의 마이바티스 예제 코드를 한번 살펴보자. SELECT * FROM MEMBER WHERE age >= 30 위의 예제 코드는 .. 2023. 12. 4. SpringBoot에 마이바티스 셋팅하기 많은 서비스 기업이나, 최신 기술 스택에 민감한 IT기업들은 데이터 접근 기술을 기존의 Mybatis에서 JPA로 이동했지만 아직까지 Mybatis를 사용하는 기업이 많고, 레거시 프로젝트들이 해당 기술을 사용했기 때문에 알아두면 좋을 것 같아서.. 현재 진행중인 JSP + SpringBoot를 이용한 미니 게시판 프로젝트에 마이바티스를 적용해보고자 한다! 먼저, 해당 프로젝트에는 Spring Data JPA가 먼저 적용되어져있다.(참고) Mybatis를 사용하기 위해선 3가지 정도의 셋팅이 먼저 필요하다. 1. Gradle 추가 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' 먼저 위와같이 그래들에 추가해주면 된다. .. 2023. 11. 11. Thymeleaf - 템플릿 레이아웃(2) Thymeleaf - 템플릿 레이아웃 에서 이어지는 내용 입니다. 이전 포스팅에서 다룬 개념을 레이아웃 H1 레이아웃 컨텐츠 레이아웃 푸터 template/layoutExtend/layoutExtendMain.html 메인 페이지 컨텐츠 메인 페이지 포함 내용 코드 실행 결과 정리 layoutFile.html 을 보면 기본 레이아웃을 가지고 있는데, 에 th:fragment 속성이 정의되어 있다. 이 레이아웃 파일을 기본으로 하고 여기에 필요한 내용을 전달해서 부분부분 변경하는 것으로 이해하면 된다. layoutExtendMain.html 는 현재 페이지인데, 자체를 th:replace 를 사용해서 변경하는 것을 확인할 수 있다. 결론적으로 layoutFile.html 에 필요한 내용을 전달하면서 자체를.. 2023. 7. 25. 이전 1 2 3 4 다음