Spring의 핵심 개념 중 PSA에 대해 다시 한번 정리해보자먼저 Service Abstraction, 그리고 PSA의 개념을 먼저 살펴보자. 1. Service Abstraction Service Abstraction은 소프트웨어 개발에서 특정 기능(서비스)을 구현할 때, 구현 세부사항을 숨기고 인터페이스만 제공하는 개념이다.이로 인해 사용자는 세부 구현을 알 필요 없이, 추상화된 인터페이스를 통해 서비스를 사용할 수 있다. 왜 Service Abstraction이 중요할까?구현변경에 유연함을 제공 서비스의 내부 구현을 변경하더라도, 추상화된 인터페이스는 동일하므로 외부 코드에 영향을 미치지 않는다.예를 들어 데이터베이스를 Mysql에서 PostgreSQL로 변경하더라도, 데이터 접근 방식(JDBC,..
Backend
1. Rate Limiter란 Rate Limiter는 처리율 제한 장치라는 의미로써, 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 컨트롤 하기 위한 장치를 의미한다.Rate Limiter를 적용하면 서비스에 너무 많은 요청이 몰리는 것을 방지할 수 있고 그로 인해 서비스를 안정적으로 운영할 수 있도록 할 수 있다. 2. Rate Limiter를 적용하면 좋은점서비스 안정성 유지과도한 요청이 몰릴 경우 시스템 과부하를 방지해 서비스 다운이나 성능 저하를 예방.리소스 관리 최적화시스템 자원을 특정 사용자나 클라이언트가 독점하지 못하게 하여 공평하게 리소스 분배.DDoS 및 비정상 트래픽 방어악의적인 대량 요청이나 비정상적인 트래픽을 제한해 보안성 강화.비용 절감과도한 요청으로 인한 서버 확장 및 리..
1. Mapstuct?? Java에서 데이터 매핑 작업을 쉽고, 빠르게 할 수 있는 라이브러리이다. 2. 설정 방법 build.gradle에 dependency를 추가한다. 주의! gradle version 4.6 미만은 설정 방식이 상이함. (참고 : https://mapstruct.org/documentation/installation/) // mapstruct implementation("org.mapstruct:mapstruct:1.5.3.Final") annotationProcessor("org.mapstruct:mapstruct-processor:1.5.3.Final") 3. Mapper Interface 만들기 Model 생성 시 유의사항이 있다. 모델은 getter가 있어야 하고 sette..
2022.08.07 - [Backend/Server&Network] - 프록시 서버란? 프록시 서버란? 1. 프록시 서버란? Proxy의 사전적 의미는 '대리' 라는 의미이다. 말 그대로 2개의 서버가 직접 통신하지 않고 중간에 서버를 중계역할로 이용하는 서버를 프록시 서버라고 한다. 프록시 서버는 보 yarisong.tistory.com 지난 포스팅에서 프록시 서버에 대해 간략히 알아보았다. 이번 포스팅에서는 HA프록시에 대해 간략히 알아보고자 한다. 1.HA Proxy란? HA Proxy란 L4, L7과 같이 하드웨어 로드밸런서를 대체하기 위한 오픈 소스로 리버스 프록시를 기반으로한 L4, L7 소프트웨어 로드 밸런서이다. 2. HA Proxy 동작 방식 위에서 설명한 것과 같이 HA Proxy는 리..
1. 프록시 서버란? Proxy의 사전적 의미는 '대리' 라는 의미이다. 말 그대로 2개의 서버가 직접 통신하지 않고 중간에 서버를 중계역할로 이용하는 서버를 프록시 서버라고 한다. 프록시 서버는 보안 목적, 캐싱 등의 기능을 제공한다. 프록시 서버가 중간에 위치함으로써 클라이언트는 프록시 서버를 서버로 인식하고 서버 입장에서는 프록시 서버를 클라이언트로 인식하게 된다. 프로시 서버는 서버의 위치에 따라 크게 두 가지로 나뉘어지게 된다. 자세한 것은 아래에서 확인해보자 2. 포워드 프록시(Forward Proxy) 클라이언트에서 서버로 리소스를 요청할 때 프록시 서버를 거쳐 요청하는 경우를 이야기 한다. 프록시 서버를 거칠 경우 서버에서는 받은 IP가 누구의 IP인지 모르기 때문에 클라이언트가 누군지를 ..
1.Spring Cloud Bus란? 앞서 포스팅에서 언급한 것과 같이 어플리케이션 설정 파일의 변경 시 별도 빌드-배포 없이 Spring Cloud Config를 이용하면 어플리케이션의 빌드-배포 없이 적용 가능한 것을 확인할 수 있었다. 그러나 MSA 구조에서 Micro Service가 많아질 경우 서버 한개 한개 각각 개별적으로 actuator/refresh 호출하여 적용하는 것을 현실적으로 쉽지 않고 누락의 가능성도 있다. 이러한 복잡하고 번거로운 점을 개선하고자 Spring Cloud Bus를 이용할 경우 손쉽게 적용할 수 있다. Spring Cloud Bus는 분산 시스템의 노드를(Micro service)를 경량 메시지 브로커와 연결하여 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달..