전체 글 썸네일형 리스트형 Effetive java 3장 정리 10. euals 는 일반 규약을 지켜 재정의하라 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 것이 아니라 동작하는 객체를 표현하는 클래스가 해당한다. ex) Thread 인스턴스의 '논리적 동치성(logical equality)'을 검사할 일이 없다. 상위 클래스에서 재정의한 equals가 하위 클래스에도 해당된다. ex) AbstractSet → Set 구현체, AbstractList → List 구현체, ... 클래스가 private거나 package-private고 equals 메서드를 호출할 일이 없다. 혹시라도 equals를 호출하는 위험을 막고 싶다면 AssertionError를 던지자. @Override public boolean equals(Object o) { throw new A.. 더보기 반년동안의 회고 회고를 해서 지금 나의상태와 잘 해나아가고 있는지 앞으로에 대한 방향성을 한번 잡아보고 싶다. K(Keep) 지속할 것들 - 지금처럼 매일매일 꾸준히 공부하는 습관은 정말 좋은 것 같다. 너무 열심히 몰입하게 되면 슬럼프도 올 수 있고, 하루하루 할 수 있는 만큼 꾸준히 하는 것이 정말 중요한 것 같다. - 목표를 3달 1달 단위롤 잘게잘게 짤라 설정을하고 다시 그 목표에 맞게 나아가게 매주단위로 계획을 세운다. 정말 효과를 많이 본 방식인 것 같다.(장사의 신 유튜브에서 봤는데 정말 효과가 있는듯.. ?) - 대외활동을 통해서 정말 많은 insignt를 얻는 것 같다. 실무에서 어떤 방식으로 진행하는지 사람들의 열정이 확실히 다르다라는 것을 느꼈다. 많은사람들과 소통을 할 수 있는 기회의 장 지금처럼 .. 더보기 동시성문제 -> Redis Redisson 재시도가 필요하지 않은 Lock은 Lettuce를 활용할 것이고 재시도가 필요한 경우에는 Redisson을 사용할 것 입니다. setnx 메소드는 만약 키가 존재하지 않는다면 설정하게 되는 것이므로 Redis 에 계속해서 LockKeyName 이 존재하는지 확인해야만 합니다. 따라서 순회하는 동안 계속해서 Redis 에 요청을 보내게 되는 것이므로 스레드 혹은 프로세스가 많다면 Redis 에 부하가 가게 될 것이기 때문에 재시도가 필요한 경우에는 Redisson 방식을 사용할 것입니다 Redisson - Pub-Sub 기반으로 Lock 구현 제공 - Pub-Sub 방식이란, 채널을 하나 만들고, 락을 점유중인 스레드가, 락을 해제했음을, 대기중인 스레드 에게 알려주면 대기중인 스레드가 락 점유를 시도하는.. 더보기 Kafka Connect Source,Sink 통해 다른시스템과 데이터 주고받기 kafka Connect 카프카 커넥트는 ETL에서 E와 L의 역할을 해준다.(Extract,Load) Source Connector는 데이터 소스에서 카프카로 보내는 역할을 하고, Sink Connector는 카프카에서 다른 목적지로 보내는 역할을 한다. Kafka Connect를 왜 사용할까? kafka를 통해서 Msa환경에 분리되어 있는 DB에 동일한 데이터 값을 전달할 수 있게 된다. 예를 들어 OrderService에 각각 다른 DB를 가지고 있고 로드밸런싱이 이루어진다고 가정하면 사용자가 데이터를 추가할 때 해당 Service Port에 들어와 있는 서비스의 DB에만 저장이 될 것이다. 동기화문제가 발생하기 때문에 이러한 단점을 해결하기위해 사용한다. 더 자세한 설명은 밑에 링크에 첨부 하겠습.. 더보기 Msa 로드밸런싱 동기화 문제 해결방안 사이트 규모가 증가함에 따라서 과부하를 처리 하는 방식 중 하나를 로드 밸런싱이라 합니다. 그리고 로드 밸런싱은 N개의 다른포트에 똑같은 서비스 ( ex : 주문 서비스 ) 를 기동시켜 교차하며 서비스를 제공하도록 합니다. 이 방법은 굉장히 효율적으로 과부하에 대비 할 수 있지만 한가지 문제점이 존재합니다. 바로 데이터 동기화의 문제 인데, 만약 H2 DB처럼 각 Port별로 어플리케이션 실행 시 생성되는 DB인 경우에는 어떨까요? #Load Balancer의 동작원리 많이 생략되어 있지만, LoadBalancer에서 어떤 Port로 접속 할지 접속 정보를 가지고 있습니다. 그리고 처음으로 요청이 들어오면, 보시는 것처럼 9091 Port로 요청값을 보냅니다. 그럼 9091Port 에서 H2-DB에는 유.. 더보기 Presigned URL을 통해 S3에 업로드하기 Presigned URL을 사용하기에 앞서 왜 사용을 하는가 ? 를 알아보겠습니다. 퍼포먼스 목적 보통 파일 업로드는 권한설정 때문에 서버를 경유해야하는 경우가 있는데 영상파일 같이 컨텐츠의 용량이 높은 경우 서버에 넘겨준 후 서버에서 스토리지에 저장하는 이중 작업은 비효율적일 때가 있다. 이때 서버에서는 Presgined URL만 발행해서 클라이언트에 던져주고 해당 url을 이용해 클라이언트단에서 직접 파일 업로드를 함으로 서버단의 리소스를 사용하지 않고 업로드가 가능하다. 다음 이름과 같이 버킷을 생성해줍시다! 버킷 -> 권한에 들어가서 CORS를 다음과 같이 설정을 합니다. "AllowedHeaders": 허용된 요청 헤더의 목록을 지정합니다. 여기서는 "*"를 사용하여 모든 헤더를 허용하도록 설정.. 더보기 Spring Cloud Bus란 무엇인가? 설정 정보 변경하기 및 반영하기 설정 정보 변경하기 위의 세팅을 모두 적용하며 각각 서비스들과 mesh 를 실행시켜보자. 그리고 설정 파일 하나를 변경한다면 어떻게 해야할가? 변경 사항 : test.message: this is version 1 -> test.message: this is version 2 설정 정보 반영하기 이제 각각의 마이크로서비스에서 설정 정보를 반영하기 위해서 Spring Boot Actuator의 refresh 기능을 위해 Postman 에 들어가자 그리고 각각의 마이크로서비스의 주소로 https://my-service/actuator/refresh 명령을 보내면 된다. 그럼 설정 정보가 반영된다. 문제점 그럼 기존의 방식의 문제점이라면 뭐가 있을까? 아마 설정이 변경되면 모든.. 더보기 MOM 미들웨어란 무엇인가? 목차 미들웨어란? MOM 이란? MOM 구성요소 MOM vs without MOM Messaging 의 2가지 방식 PTP Messaging Pub/Sub Messaging Message Broker 대표적인 MOM 솔루션 오늘은 요즘 많은 분야에서 채택되어 사용되고 있는 Message Oriented Middleware 에 대해서 알아보려 한다. Message Oriented Middleware, MOM 이란 하나의 소프트웨어나 솔루션 보다는 더 상위 개념으로 아키텍처 패턴이나 프로그래밍 기법에 해당한다고 생각한다. 물론 MOM을 위키피디아에서는 응용 소프트웨어 간의 데이터 통신을 위한 소프트웨어라고 부르지만 우리는 조금 더 큰 개념에서 이해해보자. 이런 MOM 을 이해하기 위해서는 우선 Middlew.. 더보기 이전 1 ··· 7 8 9 10 11 12 13 ··· 35 다음