스프링 AOP와 프록시 생성: 스프링 프레임워크에서는 AOP를 구현하기 위해 주로 프록시 기반의 접근 방식을 사용합니다. @Component 등으로 선언된 빈이 AOP 어드바이스(예: @Around, @Before 등)의 대상이 될 때, 스프링은 이 빈을 위한 프록시 객체를 생성하고, 이 객체를 스프링 컨텍스트의 빈으로 등록합니다. 인터페이스 기반 프록시: 스프링은 기본적으로 인터페이스가 있는 경우 JDK 동적 프록시를 사용하여 해당 인터페이스를 구현하는 프록시 객체를 생성합니다. 인터페이스가 없는 클래스의 경우, CGLIB를 사용하여 실제 클래스의 서브 클래스를 만드는 방법으로 프록시를 생성합니다. 프록시와 Heap 영역: 프록시 객체들은 스프링의 애플리케이션 컨텍스트 내에서 관리되며, Java의 He..
OAI(Origin Access Identity)는 AWS CloudFront에서 사용되는 보안 기능으로, 원본 서버(S3)의 직접 노출을 방지하고, CloudFront 배포와 연결된 S3 버킷이나 커스텀 오리진(Origin)에 대한 접근을 해용해줌으로써 보안을 강화하여 클라이언트와의 상호작용을 안전하게 유지합니다. 진행순서는 아래와 같습니다. 1. S3 버킷을 생성합니다 2. CloudFront OAI 생성 3. CloudFront 배포 생성 4. S3 정책 확인 5. CloudFront를 통해 gonang.png 사진 확인 1. S3 버킷을 생성합니다 모든 퍼블릭 액세스를 차단함으로써, S3의 직접적인 차단을 할 수 있습니다. 2. CloudFront OAI 생성 S3의 직접적인 차단을 진행하였으니,..
회사에서 Elasticsearch 도입을 진행한 경험이있다. 당시, 해당 기술을 도입하면서 특정 블로그에서 Elasticsearch와 인기검색어를 함께 결합시켰던 블로그를 본적이있기에 호기심에 개발을 시작해보았다. 참고로, elasticsearch와 nginx는 모두 설치가 되어있는 상태입니다. 우선 생각하고 있는 흐름은 아래와 같다. 1. nginx에 http://localhost:7776의 경우 vivid.co 도메인 설정한다. 2. http://vivid.co/api/search/song/info?searchWord=(여자)아이들다음과 같은 요청을 보낸다. 이 때, nginx에 해당 URL로 요청했을 경우, Log를 쌓임을 확인한다. 3. Logstash에서는 nginx에 쌓인 로그를 확인하고 El..
@Entity @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private long id; private int age; private String username; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; public void changeTeam(Team team) { this.team =..
Kafka란? Kafka 설치 Kafka Producer/Consumer Kafka Connect Apache Kafka란? Apache Software Foundation의 Scala언어로 된 오픈 소스 메시지 브로커 프로젝트이다. 메시지 브로커는 특정한 서비스에서 다른 서비스로 메시지를 전달한다. 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량(대용량), 낮은 지연 시간을 지닌 플랫폼을 제공한다. 카프카가 없던 시절에는 Hadoop, SearchEngine 등 다양한 형태의 처리가 불편하였고, 확장이 편리하지 않았다. 카프카의 주요 장점은 다음과 같습니다: 카프카(Kafka)는 분산 스트리밍 플랫폼으로, 대용량의 실시간 데이터를 처리하기 위해 설계되었습니다. 주키퍼(Zookeeper)와 브로커..
Communication types RestTemplate Feign Client - Log, Exception ErrorDecoder Multiple Orders service Rest Template 사용자가 user Info 뿐만아니라 orders의 정보도 함께 알고 싶을경우, REST Template를 통하여 USER Service가 Order Service에게 요청 하고 응답을 받는다 ~/msa-config/user-servie-dev.yml order_service: url: order_service.url 값을 다음과 같이 설정한다. user-service - UserServiceApplication.java @SpringBootApplication @EnableDiscoveryClient ..
KeyTool 생성하기 keytool -genkeypair # Key를 생성하겠다 -alias apiEncryptionKey # 별칭을 apiEncryptionKey -keyalg RSA # 알고리즘은 RSA방식 -dname "CN=Geumbit Kim, # 인증서의 주요 식별 이름 OU=API Development, # 소속 부서 O=gbitkim, # 소속 기관 L=Seoul, ST=KR, C=KR" -keypass "gbitkim_msa" # 비밀키는 gbitkim_msa 이는 -storepass와 같게해야함 # 아래 jks파일로 만들었기에 -keystore apiEncryptionKey.jks # Key를 생성할때 apiEncryptionKey.jks를 생성하겠다. -storepass "gbitk..
Spring Cloud Bud RabbitMQ 설치 프로젝트 수정 - Actuator 테스트 Spring cloud bus 사용함으로써, 분산 시스템의 노드(MS)를 경량 메시지 브로커(RabbitMQ)와 연결하여 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)할 수 있다. Spring Cloud Bus가 Spring Cloud Config Server 에 변경된 설정 정보를 Push하면 (HTTP POST /busrefresh) Spring Cloud Config Server 는 설정정보를 update하여 연결된 MS들에게 변경사항을 전달한다. MS에게 전달해도 전체 반영이된다. 자세한 내용은 실습을 통해 알아볼것이다. Section7에서처럼 MS 하나씩 refresh할 필요..
- Total
- Today
- Yesterday
- 스트림
- map
- mvn
- 영속성 컨텍스트
- BeanFactory
- ngnix
- install
- NPM
- elasticsearch
- Intellij
- stream
- JPA
- docker
- container
- AnnotationConfigApplicationContext
- 자바8
- ApplicationContext
- java
- Vue
- webpack
- 최종연산
- 람다
- 차이
- Vuex
- nginx
- springboot
- MAC
- vscode
- 중간연산
- lambda
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |