일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 디자인 패턴
- Til
- Join
- 네트워크
- LV1
- Redis
- spring boot
- LV.02
- LV03
- 일정관리프로젝트
- LV0
- 코테
- mysql
- SQL
- docker
- Lv.0
- 배열
- 연습문제
- CoffiesVol.02
- 알고리즘
- LV02
- Java
- 데이터 베이스
- 이것이 자바다
- LV01
- GIT
- 포트폴리오
- S3
- JPA
- Today
- Total
목록포폴/Coffies Vol.02 (12)
코드 저장소.
목차1.기존의 문제점2.코드 리팩토링 1.기존의 문제점 기존에 작성을 했던 회원의 위치의 위경도를 기준으로 해서 반경3km에 있는 가게를 보여주는 기능에서 리팩토링을 해야되는 부분이 발생을 해서 고쳐보기로 했다. 기존의 코드의 문제점은 다음과 같다. 1. 현재 @Retryable을 사용해서 API 호출이 실패하면 3번까지 재시도하도록 되어 있음. 하지만 3번 재시도 후에도 실패하면 null을 반환함. 2. @Recover에서 응답값이 null이라는 점. 3. URI 중복 요청 가능성 Set uris = new HashSet(); -> 현재 Set을 사용하지만, page가 1로 고정되어 있어 항상 한 개의 URI만 추가됨. 2.코드 리팩토링이러한 문제점을 해결하기 위해서 기존의 코드에 변경을 했습니다..

목차1.문제 상황2.고안 3.적용 및 결과 1.문제 상황가게 정보를 직접 입력을 하는 것보다는 가게정보를 카카오맵에서 가져와서 정보를 다루는 것이 낫다고 해서 크롤링을 함. 기존의 방식은 사진과 같습니다. 이 방식에서 여러 문제가 있는데 보완을 해 볼점은 다음과 같습니다.한번 작업을 완료를 하는데 시간이 많이 걸림크롤링에서 가게가 중복으로 저장크롤링 작업시 예상치 못하게 작업이 중단된 경우 중단된 곳까지 저장이 됨.2.고안 우선은 현 상황에서의 문제점을 해결하기 위해서 다음과 같은 생각을 해봤습니다. 크롤링 작업 속도가 느리다.Redis를 사용해서 작업 동시에 가게 정보를 캐싱하기.크롤링에 중복으로 저장되는 가게내용크롤링 작업시 미리 csv파일을 만들어서 데이터 백업 겸 중복으로 저장을 하지 않게 1차로..

목차1.문제상황2.분산락?? 3.코드 및 검증 1.문제상황현재 내 프로젝트에서 자유게시글에서 조회수와 좋아요 기능과 가게 댓글에 좋아요 기능에서 게시글과 댓글에 좋아요를 눌렀을 경우 좋아요의 수가 제대로 카운팅이 되지 않는 상황이 발생을 했다. 현재 좋아요의 공통적인 로직은 다음과 같습니다. 좋아요 엔티티에서 좋아요 여부를 확인 -> 데이터가 없으면 좋아요 추가와 좋아요 수 증가-> 데이터가 있으면 좋아요 취소 좋아요 수감소 하지만 이 로직에서의 문제점은 다음과 같습니다. 1. 경쟁조건 여러 사용자가 동시에 같은 게시글이나 댓글에 좋아요를 누르거나 취소할 때, 다음과 같은 문제가 발생할 수 있습니다.중복된 좋아요/싫어요: 이미 좋아요를 누른 사용자가 다시 누르거나, 싫어요를 누른 사용자가 다시 싫어요..
목차1.Redis keys -> Scan2.코드 적용 1.Redis keys -> ScanSpring Data Redis에서 KEYS 명령어는 Redis에 있는 전체 키 목록을 가져옵니다. 하지만 KEYS는 몇가지의 문제점을 가지고 있습니다. 우선 KEYS의 문제점은 다음과 같습니다. 속도 저하 문제KEYS는 Redis에 있는 모든 key를 찾는 방식입니다. 키의 갯수가 많아지면 속도 저하에 문제가 생길 수 있습니다.블로킹KEYS의 경우에는 실행을 하는 동안에는 다른 요청을 할 수가 없기 때문에 성능에도 문제가 생길 수 있습니다.그럼 이러한 문제점을 해결을 하기 위해서 찾아본 것이 Redis에 SCAN이라는 명령어가 있어서 사용을 하게 되었습니다. Scan의 설명과 특징은 다음과 같습니다.설명:Scan명..
목차1.문제상황 및 해결 방안 2.적용 1.문제상황 및 해결 방안만들고 있는 기능 중에 회원의 위치를 기준으로 해서 가까운 거리에 있는 카페를 카카오맵으로 보여주는 기능에서 서버에서 카카오맵api를 사용해서 가게 정보를 가져오는데 가끔씩 연결이 끊기는 문제가 생겨서 데이터를 못가져오는 경우가 간간히 발생. 그래서 스프링에서 제공을 하는 @Retryable을 사용하면 api의 재시도와 예외처리를 설정을 할 수 있어서 적용하기로 했습니다. 2.적용2-1.build.gradle에 주입을 한다.implementation 'org.springframework:spring-aspects'implementation 'org.springframework.retry:spring-retry' 2-2.설정 클래스 작성@E..

목차1.문제상황2.적용 1.문제상황서버가 한대인 경우에는 해당 서버에 세션 정보를 저장해서 사용을 할 수 있지만, 현재 진행중인 프로젝트의 경우에는 Scale-out을 적용한 환경에서는 세션 불일치 문제가 발생을 할 수 있습니다. 세션 불일치?웹 애플리케이션에서 사용자 세션의 상태가 일관되지 않거나 예상치 못하게 변경될 때 발생하는 문제를 세센 불일치라고 합니다. 세션 불일치를 해결하는 방식에는 크게 3가지가 있습니다. Stikcy-SessionSession-ClusteringSession-Storage 이중에서 제가 적용을 할 것은 Redis를 Session-Storage로 사용할 것입니다. 우선 Redis를 사용한 이유는 다음과 같습니다. 확장성: 모든 서버가 중앙 세션 스토리지(예: Redi..