본문 바로가기

분류 전체보기

(55)
Aws Sns Fanout 이벤트를 이용한 서버 캐시 삭제 (O) A 쇼핑몰에서는 남자옷(서버), 여자옷(서버),아기옷(서버) 가 각각 서버가 분리되서 사용중이고 사용자(서버)에는 옷을 구매할때 쓸 수 있는 포인트 정보가 있다. 물론 포인트 DB에 각 서버별로 붙어서 업데이트된 포인트를 읽어 올수도 있지만 이러면 서버를 분리한 의미가 없다. 포인트 DB에 종속적이되고 포인트 DB가 장애가 발생한다면 포인트 DB를 사용하는 서버들도 다 장애가 발생할 것이다. 그래서 옷?서버들은 포인트 정보를 캐시하고 있다. 이런 경우 Aws Sns FanOut을 이용하여 캐시를 손쉽게 삭제할 수 있다. 이것도 메시지 푸시를 받게 되는것과 다르지 않은데... (R) AWS 에서는 Sns를 이용해 Pub/Sub 구조를 만들어 메시지를 발생하면 메시지가 구독자들은 그 메시지를 받을 수..
JAVA 9 ~ JAVA16 달라진점 자바 8 https://blog.naver.com/whydda/222227014403 JAVA8(JDK1.8) 의 8가지 특징 1. Lambda Expressions ▶ 람다 표현식은 익명 함수(Anonymous Function) 이라고 할 수 있다. ▶ 람다... blog.naver.com 은 이 글을 참고 ~ 자바9 private 메서드 public interface Payment { void reserve(); void certify(); void pay(); void status(); default void recodeStatusTime(){ startTime() status() endTiem() } private void startTime(){ System.out.println(System.cu..
Docker에서 Redis설치해서 바로 사용하기! Docker는 설치가 되어있다고 과정한다. Docker에 Redis 설치 docker pull redis Redis Network 구성 docker network create redis-net //redis cli를 같이 구동하기 위해 network 구성 Docker 실행 appendonly 옵션을 통해 데이터를 파일로 관리해서 전원이 종료 되어도 데이터가 사라지지 않도록 함 docker run --name whydda-redis \ -p 6379:6379 \ --network redis-net \ -v /Users/whydda/workspace/opensources/redis:/data \ -d redis redis-server --appendonly yes Redis cli로 접속 docker run..
@Transactional 간단한 정리 @Transaction 은? 스프링에서 제공하는 트랜잭션 중 하나로 내부적으로는 Spring AOP를 사용하며 선언적 트랜잭션 이라고도 한다. 사용된 디자인 패턴은? 프록시 패턴 (Proxy Pattern) 어떤 객체에 대한 기능을 대신 수행하는 대리 객체를 사용하는 개발 패턴이다. AOP 핵심만! Dynamic Proxy Java 리플렉션을 사용하고 proxy 클래스를 통해 프록시 객체를 생성 (트랜잭션 전 처리 -> 비즈니스 로직 실행 -> 트랜잭션 후 처리)를 위임하고 프록시 객체는 런타임 시점에 동적으로 생성된다. CGLib 리플랙션 대신에 바이트코드를 생성 프레임워크를 사용하여 런타임 시점에 프록시 객체를 만든다. Dynamic Proxy 와 다른 방법을 사용하여 인터페이스가 없으면 프록시 객체..
DAU(Daily Active Users) / MAU(Month Active Users) 란 무엇인가? DAU란? 마케팅 지표 중 하나로 하루 동안 방문한 순수 사용자 수를 말한다. DAU를 정확하게 집계하려면 한 사용자가 내 사이트를 여러 번 방문한다고 해도 하나의 방문자로 봐야 한다. 그래야 정확하게 DAU 값을 알 수 있고 쓸모있는? 지표가 아닐까 한다. MAU란? 월간 활성 사용자라 하고 한달동안 방문한 순수 사용자를 말한다. 성숙한 서비스의 경우에는 MAU가 비교적 꾸준하게 유지된다. 한마디로 MAU 가 꾸준하게 나온다면 성공한 서비스가 아닐까 한다. 이 통계 값을 가지고 어디서 사용할 수 있나? 하루 동안 얼마나 많은 사람들이 나의 사이트 및 홈페이지에 들어왔는지를 알 수 있으면 블로그를 예를 들어 오늘 방문자 수 100명 중 직업에 따른 글이 조회수가 좋았다면 내 블로그를 더 방문하게 하려면 ..
Spring Boot 특정 버전의 의존성은 어떻게 확인 할 수 있을까? Spring Boot Version 2.0.0.RELEASE 이라고 가정하면? 1. 공식 사이트를 이용한다. https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html#dependency-versions Dependency Versions The following table provides details of all of the dependency versions that are provided by Spring Boot in its CLI (Command Line Interface), Maven dependency management, and Gradle plugin. When you declare a d..
Docker 로 Mysql 5.7 버전 설치하기 Mysql Docker 이미지를 다운로드 받는다. $ docker pull mysql:5.7 Docker 이미지 확인 $ docker images Docker로 Mysql을 설치했다면 Mysql 구동하자 docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 -v /Users/whydda/data/mysql5.7:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci DataGrip을 사용해서 접속 테스트 user : root password : root 접속 후 잘 사용하시면 됩니다.
생성자 보단 정적 팩토리 메서드! (왜 정적 생성자를 통해 객체를 생성하는것이 안티패턴인가?) 정적 팩토리 메서드(Static Factory Method)란? 객체 생성 시 캡슐화 한다. 객체를 생성하는 역할을 하는 클래스 메서드이다. GoF 디자인 패턴 중 팩토리 패턴에서 유래한 이 단어는 객체를 생성하는 역할을 분리하겠다는 취지가 담겨있다. 생성자와의 차이는? 이름을 가질 수 있다. 생성자를 통한 생성 Character warrior = new Character(5, 15, 20, 3); Character mage = new Character(15, 5, 10, 15); 정적 팩토리 메서드를 통한 생성 Character warrior = Character.newWarrior(); Character mage = Character.newMage(); 호출할때 마다 객체를 생성할 필요가 없다. pu..