BackEnd
-
AspectJ와 Spring AOP의 차이점 & Java AgentBackEnd/스프링 2024. 12. 1. 20:07
AspectJ 의 동작 방식AspectJ는 두 가지 주요 방식으로 Weaving(바이트코드 수정)을 지원합니다.컴파일 타임 Weaving(CTW): 컴파일 시 바이트코드를 수정.로드 타임 Weaving(LTW): JVM이 클래스를 로드할 때 바이트코드를 수정.사용 예시 )영속성 객체인 DAO는 서비스에서 작업을 할 때, 즉 런타임에 는 동적으로 생성되는 POJO 객체이다.동적으로 생성되는 POJO 객체는 LTW 방식으로 AOP 를 적용할 수 있다. 스프링 AOP 와 AspectJ LTW 의 차이Spring AOP는 기본적으로 프록시 기반 AOP를 사용하므로 -javaagent 설정이 필요 없습니다.하지만 Spring에서 AspectJ를 사용하여 로드 타임 Weaving을 활성화하려는 경우, -javaag..
-
-
3. AWS의 인터넷 연결BackEnd/AWS 2024. 6. 26. 15:26
[ 목차 ]인터넷 연결을 위한 4가지 조건 1) 인터넷 게이트웨이최종적으로 인터넷 게이트웨이를 통함. 2) 네트워크 라우팅 테이블 정보 모든 네트워크 0.0.0.0/0 통신은 인터넷 게이트웨이로 전달하기 위해 경로를 지정 3) 공인 IPAWS 퍼블릭 IP 혹은 탄력적 IP. 프라이빗 IP 는 NAT 를 통해 공인 IP 로 변환. 4) 보안그룹과 네트워크 ACL외부 네트워크 통신 허용 필요. 인터넷 연결을 위한 3가지 방안 특징인터넷 게이트웨이NAT 디바이스(NAT 인스턴스/NAT 게이트웨이)Proxy 인스턴스동작Layer 3계층 (네트워크계층)Layer 4계층 (전송계층)Layer 7계층 (응용계층)주소변환private IP -> public IP1:1 변환IP 주소와 port 변환IP 주소와 port..
-
배치그룹BackEnd/AWS 2024. 6. 26. 14:52
[ 목차 ]배치그룹1. 분산 배치AWS 의 기본적인 인스턴스 배치는 분산배치 방식이다. 호스트 장애에 대해 상호 간 영향도를 최소화하고 장애를 줄이기 위해, 새 인스턴스가 시작될 때 하드웨어에 최대한 분산해서 배치한다.AZ 당 최대 7개 인스턴스로 제한된다. 워크 로드에 따라 배치 그룹 전략을 정할 수 있다.2. 클러스터 배치 그룹 애플리케이션 간 긴밀한 통신이 요구되고, 낮은 지연시간과 높은 네트워크 성능이 필요할 때,인스턴스 간 배치를 서로 근접하게 하는 방식이다.3. 파티션 배치 그룹 클러스터 전략과 분산 배치 전략을 섞은 것으로, 여러 AZ 안에 파티션을 두고 파티션 안에서 여러 인스턴스를 클러스터 전략처럼 배치할 수 있는 전략이다.AZ 당 파티션을 최대 7개까지 가질 수 있으며, 파티션 배치 그..
-
OptimisticLock / Pessimistic Lock / Named LockBackEnd/실습 2022. 9. 26. 15:41
DB 를 통해 동시성을 제어할 때는 Pessimistic Lock, Optimistic Lock, Named Lock 세가지 방법이 있다. 이미 mysql 사용한다면 별도의 비용 없이 동시성을 제어할 수 있고, 어느 정도 트래픽까지 문제없이 사용할 수 있다. 더 좋은 성능이 필요하다면 redis 를 사용해 동시성 제어가 가능하다. Pessimistic lock 은 미리 동시에 접근한다고 가정하고 방어하기 때문에 충돌이 잦은 경우에, Optimistic lock 은 update 하는 시점에 select 해온 버전에서 데이터가 변경이 없는지 확인하고 update 를 하는데, 충돌이 거의 일어나지 않는 상황에 사용하기 적절하다. Optimistic Lock 은 버전이 달라졌을 경우 재시도하는 로직을 함께 구현..
-
동시성 제어 syncronized와 @TransactionalBackEnd/스프링 2022. 9. 26. 14:51
서비스에 @Transactional 어노테이션만 붙이면 동시에 자원에 접근하는 스레드들에 레이스 컨디션이 발생했을 경우, 기대와 다르게 동작할 수 있다. @RequiredArgsConstructor @Service public class StockService { private final StockRepository stockRepository; @Transactional public void decrease(Long id, Long quantity){ Stock stock = stockRepository.findById(id).orElseThrow(); stock.decrease(quantity); stockRepository.saveAndFlush(stock); } } 1. 트랜잭션이 시작되는 메서드..
-
-
2. VPC 엔드포인트BackEnd/AWS 2022. 9. 19. 22:45
[ 목차 ]1. VPC Endpoints엔드포인트는 private network 를 통해 AWS 서비스에 연결되도록 한다. 향상된 보안성과 낮은 지연성을 갖고 AWS 서비스에 접근할 수 있다. 예를 들어 EC2 인스턴스가 S3, DB 에 접근할 때 VPC Endpoint Gateway 를 통해 접속할 수 있다. VPC Endpoint GateWay 와 VPC Endpoint Interface 가 있다. 엔드 포인트 : AWS 퍼블릭 서비스 대상에 대한 프라이빗 연결엔드포인트 서비스 : 사용자가 지정한 서비스 대상에 대한 프라이빗 연결엔드포인트 게이트웨이 엔드포인트aws 퍼블릭 서비스 중 s3, dynamo db 에 대한 연결인터페이스 엔드포인트위 대상 외 나머지 aws 퍼블릭 서비스에 대한 연결엔드포인..