
마이크로서비스 아키텍처에서는 각 서비스가 독립된 DB를 가지기 때문에 기존의 단일 트랜잭션(@Transactional)으로 여러 DB에 걸쳐 원자성을 보장하기가 어렵다. 이를 해결하기 위해 다음과 같은 방식을 사용한다. 1. SAGA 패턴SAGA 패턴은 마이크로서비스 간 분산 트랜잭션을 처리할 때 사용되는 패턴으로 각 서비스가 트랜잭션을 순차적으로 실행하고, 중간에 실패가 발생하면 보상 트랜잭션(Compensation Transaction)을 수행하는 구조이다. 위 그림은 SAGA 패턴의 흐름을 간단하게 보여준다. 1. Order Service주문 요청을 처리하고 DB에 주문 정보를 저장한 뒤, Payment Service로 결제를 요청한다. 2. Payment Service결제 승인 처리르 하고 성공..
문제 발생 로그인 시에 IP 제한 기능을 구현하기 위해 다음 코드와 같이 로그인 로직을 처리하기 전에 클라이언트의 IP를 얻어와 허용된 IP인지 체크하려고 했다. @PostMapping("/login") public String login(LoginDto loginDto, HttpServletRequest request) { String remoteAddr = request.getRemoteAddr(); // 1. IP 체크 로직 // 2. 로그인 로직 } 하지만 getRemoteAddr()로 부터 얻어온 IP는 요청한 클라이언트의 IP가 아닌 웹 서버의 IP주소가 담겨있었다. 문제 원인 이러한 현상이 나타나는 이유를 찾아보니 클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치게 되면, 서버..
Docker를 사용하는데 No space left on device 에러가 발생했다. 확인해보니 디스크 용량이 부족한게 문제였다. 이를 해결하기 위해 Docker Container에서 사용하지 않는 모든 Docker Volume을 정리 하기 위해 아래 명령어를 사용했다. docker volume prune 위의 명령어를 통해 Docker Volume을 정리하였지만 크게 효과를 보지못하였다. 그래서 현재 Docker가 사용하고 있는 디스크 공간을 여유 있는 디스크 공간으로 변경하기로 했다. 먼저, 실행중인 Docker Service를 중지시킨다. systemctl stop docker Docker 종료시에 다음과 같은 내용이 출력된다면 systemctl stop docker Warning: Stopping..
1. fail2ban이란? fail2ban 은 무차별 대입 및 기타 자동화된 공격으로부터 서비스를 보호하는 솔루션이다. 💡 참고: fail2ban은 사용자 이름/비밀번호 인증이 필요한 서비스를 보호하는 데만 사용할 수 있다. 예를 들어 fail2ban으로 ping을 보호할 수 없다. 2. fail2ban 설치 CentOS 7 이전에는 secure 로그파일에 의존하여 동작 했으나 CentOS 7 부터는 systemd에서 통합적으로 관리한다. 로그파일이 없으면 fail2ban 동작불가하기 때문에 fail2ban-systemd를 같이 설치한다. sudo yum -y install fail2ban fail2ban-systemd sudo systemctl enable fail2ban sudo systemctl s..
- Total
- Today
- Yesterday
- tomcat
- Apache
- fail2ban
- catalina.out
- logrotate
- docker
- port
- ssh
- X-Forwarded-For
- Failed to unlink socket file
- No space left on device
- 몽고DB
- Permission
- /tmp/mongodb-27017.sock
- denied
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |