스프링 프로젝트를 하는 중에 회원가입을 개발하고 다음으로 로그인 개발을 하였습니다. 그 다음으로 유저의 정보를 수정하는 API를 개발하는데 "이 사용자가 해당 정보를 수정할 수 있는 권한이 있는건가?" 라는 사실을 검사해야하기에 저는 수정 권한을 체크하기 위해서 로그인 여부를 체크하였습니다. 그리고 그 다음으로 회원 탈퇴 API를 개발하였는데 또 다시 로그인 권한을 체크 해야했습니다. 이처럼 로그인 권한 검사는 개발자가 어떠한 목적을 가지고 API 개발하였는 가 와는 별개로 부가적인 로직으로 메소드 앞 부분에 반복해서 추가해야하는 상황이 오게 됩니다. 따라서 저는 이 로그인 부분을 따로 떼어놓아야겠다고 생각했습니다. 그리고 반복되는 부가 로직을 분리하는 방법으로는 3가지가 있습니다. Filter와 Int..
Transaction Template와 달리 트랜잭션 처리를 코드에서 직접적으로 수행하지 않고 설정 파일이나 어노테이션을 사용해서 트랜잭션의 범위, 롤백 규칙 등을 정의한 것이라 합니다. 그럼 @Transactional을 사용해서 서비스 클래스에서 트랜잭션을 만들어주는 방식은 선언적 트랜잭션 방식을 사용하였다는 것을 알겠습니다. 이제 이것에 대해 더 자세히 알아보겠습니다. 트랜잭션의 정의 방식 1. 태그를 이용해서 트랜잭션을 처리합니다. 2. @Transactional 어노테이션을 이용한 트랜잭션 설정을 합니다. 3. TransactionProxyFactoryBean 태그를 이용해서 트랜잭션을 처리합니다. 트랜잭션은 설정파일에서 이렇게 설정하여 사용할 수 있습니다. 여기서 , , 태그를 사용해서 트랜잭션..
먼저 저는 헬스 동행을 구하는 어플리케이션인 'HELPARTY'를 개발 중에 있습니다. 나중에 이 어플리케이션 서버의 처리량이 한계에 도달했을 때 서버를 확장하는 방법에 대해 알아보았습니다. 먼저 서버의 성능을 올리는 방법에는 2가지가 있다는 것을 알았습니다. Scale Out vs Scale Up 첫번째로 Scale Out과 Scale In이 있습니다. 이것에 대한 정보는 이 포스팅을 참조해주시길 바랍니다. hamryt.tistory.com/1 스케일 아웃 (Scale Out) vs 스케일 업 (Scale Up) #1 스케일 아웃 정의 접속된 서버의 대수를 늘려 처리 능력을 향상시키는 것이다. 서버가 증설됨에 따라 트래픽을 나누어 갖게 되고, 각각의 서버가 이를 처리하게 된다. 수평 스케일로 불린다. ..
Sticky Session 고정된 세션을 말합니다. 클라이언트는 자신의 세션이 저장된 서버에서만 응답을 받게 됩니다. 로드벨런서는 클라이언트의 요청을 받으면 쿠키에 지정된 서버 정보를 확인하고 그 서버로만 요청을 보내게 됩니다. 해당 서버는 클라이언트가 로그인할 때 세션 정보를 저장하고 전달해준 서버이기 때문에 해당 클라이언트에 대한 세션을 가지고 있습니다. 만약 자신의 세션을 저장하고 있는 서버에 대한 정보가 없는 클라이언트의 요청이 온다면 로드 벨런서는 알고리즘을 기반으로 서버를 골라 보내줍니다. 클라이언트는 세션이 유지되는 동안 동일한 서버만을 사용하기 때문에 정합성 이슈에서 자유로워집니다. 단점 고정된 세션을 사용한다는 점에서 특정 서버에 트래픽이 집중될 위험이 있습니다. 하나의 서버에 트래픽이 ..
#1 유틸 클래스란 Utility 클래스는 매개 변수에 대해 작업을 수행하는 정적 메서드만 있는 클래스입니다. 그리고 이 클래스는 Static 이고 Stateless로 사용하여 멀티스레드 환경에서 Thread-safe합니다. 그리고 보통 final로 선언되어 상속될 수 없고 생성자는 private으로 선언되어 초기화 가능성을 막아버리며 다른 클래스에 의해 생성될 수 없습니다. 유틸 클래스를 사용할 때 발생하는 문제점 1. 강한 결합 첫번째로 유틸클래스를 사용할 때 가장 우려하는 부분입니다. 유틸클래스를 사용하는 클래스는 유틸클래스에 강한 의존성을 갖게 됩니다. 추상화를 진행하지 않았기에 유틸클래스의 변화에 해당 객체는 많은 영향을 받게 된다. 따라서 다양한 프로그래밍 환경에서 해당 클래스는 유틸 클래스에..
#1 스케일 아웃 정의 접속된 서버의 대수를 늘려 처리 능력을 향상시키는 것입니다. 서버가 증설됨에 따라 트래픽을 나누어 갖게 되고, 각각의 서버가 이를 처리하게 됩니다. 수평 스케일로 불립니다. 특징 장점 병목 현상을 줄일 수 있습니다. 여러 대의 서버를 운영하므로 트래픽을 분산시켜주는 로드 밸런싱을 구현해야 합니다. 이는 트래픽이 증가함에 따라 부하가 적은 서버로 트래픽을 적절히 분담할 수 있음을 알려줍니다. 확장에 유연합니다. 필요에 따라 서버의 수를 원하는 만큼 늘릴 수 있습니다. 가용성을 높일 수 있습니다. 서버가 여러대인 만큼 하나의 서버가 다운되면 다른 서버로 서비스가 제공되어질 수 있다는 장점이 있습니다. 단점 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 로드밸런..
- Total
- Today
- Yesterday
- 유틸클래스
- 선언적 트랜잭션
- Filter
- scale in
- UTIL
- AOP
- 로그
- 성능 테스트
- Declarative Transaction
- MySQL
- nGrinder
- 성능 향상
- log4j2
- interceptor
- devops
- 쿼리 튜닝
- AWS
- logback
- scale Out
- redis
- memcached
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |