본문 바로가기

redis3

[Delivery] Redis에 session 저장하기 Delivery 프로젝트는 대용량 트래픽을 대비해 Scale-out 환경으로 구축했습니다. Scale-out 환경엔 session 로그인 구현 시 아래 그림과 같은 문제가 생길 수 있는데 로그인을 했음에도 세션이 저장되어 있지 않은 서버가 요청을 받는다면 다시 로그인을 해야 하는 문제입니다. 저는 session storage 방식으로 해결했습니다. 세션을 관리하는 Redis 서버를 별도로 두어 어느 애플리케이션 서버에 요청이 들어와도 로그인은 한 번만 하면 됩니다. UserLoginService @Service @AllArgsConstructor public class UserLoginService { private final HttpSession httpSession; private final User.. 2021. 12. 31.
[Delivery] 프로젝트 구조 Delivery 프로젝트는 대용량 서비스를 대비한 구조로 만들어 보려고 노력을 했다. 하지만 웹 개발자를 위한 대규모 서비스를 지탱하는 기술이란 책을 최근에 읽어보면서 Delivery 구조는 부족함이 많았다. 그래도 일단 지금까지 구성한 내용을 설명하고 부족한 것 같은 부분도 써보겠다. ▶Application Server Spring boot + tomcat 환경으로 scale out 방식으로 분산처리가 가능하도록 했다. ▶Nginx 웹서버로 로드밸런싱을 위해 도입했다. 아파치도 고려를 해보았으나 아파치는 요청마다 자식 프로세스를 생성함으로 리소스를 많이 먹는다. Nginx는 싱글 스레드로 event driven 방식으로 저렴한 비용으로 비동기 작업을 수행한다. ▶Jenkins Jenkins로 CI/CD.. 2021. 12. 28.
Spring Boot에 Redis Cache 적용해보기 간단하게 Spring boot에서 Redis를 통해 Cache를 해보겠습니다. 첫째로 Redis 의존성을 추가하고 설정을 해야 합니다. builde.gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis' RedisConfig.class @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Bean public LettuceConnectionFactory connectionFactory() { retu.. 2021. 11. 25.