본문 바로가기

ALL105

Cache를 적용하여 API 기능을 개선해보자 (2) Redis repository와 Redis Template 이 글은 당근마켓을 모티브로 한 프로젝트 Secondhand 구현시 이슈 사항을 정리한 글입니다. 2023.11.24 - [🌱 Spring] - Redis Cache를 적용하여 Read API 기능을 개선해보자 (1) 이론학습 앞서 기본적으로 Cache에 대해서 학습하고 어노테이션을 적용해서 캐시 저장을 해보았는데요. 여기까지 학습과정 중에 아쉬웠던 점은 캐시 추상화 어노테이션을 사용하는 것만으로는 팀원과 구현해보기로 한 `write-back` 을 구현하기 힘들었다는 것입니다. `write-through`는 이런 방식으로 구현할 수 있습니다. @Service public class MyService { @Cacheable(value = "myCache", key = "#id") public String .. 2023. 12. 8.
2023-W48 회고 : 좋아하는 것을 찾는 방법 이번 주에 한 것 What is New?! 실시간 채팅 WIKI 작성 완료하였습니다. 드디어...! 그리고 동시에 리팩토링과 테스트를 다시 짜보고 있습니다. [Link] Spring AOP를 사용하여 Event publish 의 관심사를 수평으로 분리해보았습니다. 생각보다 신경쓸게 많아서 스트레스 받았어요... 관련된 글은 조만간 comming soon...! What I Leanred `후니의 쉽게 쓴 시스코 네트워킹` 1권 후기 네트워크 공부를 하기 위해 읽기 시작한 후니의 쉽게 쓴 시스코 네트워킹 책을 1권으로 마무리하고 다음 책으로 넘어가기로 했습니다. 책 정보 : https://www.yes24.com/Product/Goods/113485068 후니의 쉽게 쓴 시스코 네트워킹 - 예스24 네트워.. 2023. 12. 6.
2023-W47 회고 매주 회고를 쓸 수 있을 지 모르겠지만... 이번주는 인사이트를 가볍게나마 나누고 싶어서 구구절절 적어보았습니다. 이번주에 한 것 What is New?! 피그마 처음 써봤는데, 이걸 왜 지금 썼지 싶을 정도이더라고요. 공부하는 방식에도 적용하고 블로깅할때도 가볍게 그림 컨텐츠를 제작할 때도 쓰면 좋겠어요 👍 이력서 갱신 ✨ 이제 블로그 쓰면서 링킹하면 됩니다. Spring 의 특징인 PSA에 대해서 공부했습니다. 👩🏻‍💻 What I leared 일은 작게 하자, 커밋은 한 단위를 다 포함시키게 하자. 이미 작업기간이 모두 끝나고 문서만 정비하고 있는 프로젝트가 있는데 정말 오랜만에 팀원과 만나서 문서화 겸 코드를 수정하여 브랜치를 합칠 일이 생겼습니다. 그런데 그 중간중간 저는 한 브랜치에다 주마다 .. 2023. 11. 26.
Cache를 적용하여 Read API 기능을 개선해보자 (1) 이론학습 이 글은 당근마켓을 모티브로 한 프로젝트 Secondhand 구현시 이슈 사항을 정리한 글입니다. 사실 처음 시작은 조회수 구현을 어떻게 효율적으로 할 수 있을까에서 출발하였습니다. [조회수 관련해서 참고한 블로그 글] 세션별로 중복되지 않게 일정 시간동안 1회씩 카운팅하고 싶은 욕심이었습니다. 그런데 학습을 하다보니 레디스 Cache를 읽기 API에서도 사용해보고 싶더라고요🔥 API 성능을 개선해본 뒤 차근차근 조회수도 개선해보도록 하겠습니다. Cache에 대하여 캐시 Cache는 자주 사용하는 연산에 대하여 속도가 빠른 임시 공간에 저장해두어 애플리케이션 연산 속도를 높일 수 있습니다. 애플리케이션 연산 속도는 DB I/O작업을 얼마나 줄이느냐에 비례하는데요. 캐시를 사용해서 DB는 물론, 어플리케이.. 2023. 11. 24.
Error: Sqlite3 와 Hibernate 연동 문제 발생 상황 간단한 토이 프로젝트 세팅 중, DB를 무엇으로 쓸 지 정해지지 않은 상태에서 가볍게 SQLite를 써보자고 하는 중이었는데요. (SQLite는 단일 파일 DB로서 h2와 경량화된 데이터베이스이며 인메모리로 활성화할 수 있다는 공통점이 있습니다. 학습의 용도로 SQLite를 시도해보기로했어요.) SQLite와 Spring JPA가 연동되지 않는 문제가 있었습니다. 당시 yml spring: datasource: driver-class-name: org.sqlite.JDBC url: jdbc:sqlite:sqlite-sample.db jpa: database-platform: org.hibernate.community.dialect.SQLiteDialect 에러메시지 org.hibernate.H.. 2023. 11. 18.
2022년 회고 (3) 백엔드 개발자가 되겠어 ✊ 케케묵은 지난글 👇 2022년 회고 (1) 커뮤니티 기획자가 개발자를 꿈꾸게된 이야기 2022년 회고 (2) 풀스택 국비교육 수강기 매우 늦었고 내용이 별거 없어서... 조금 부끄럽지만... 시작한 글을 마무리해보겠다는 의지로 gitpage에 숨겨져있던 글을 끌고 왔습니다. 백엔드 개발자가 되어야겠다! 이때 즈음부터 백엔드 개발자가 되어야겠다는 결심을 했다. 왜 백엔드인가... 사실 처음에는 나는 프론트엔드가 더 잘 맞는다고 느끼기도 했다. 이전에 기획자로서 했던 일도 이용자와 직접 접하며 생기는 인터액션에 대한 풍부한 상상이 필요했었기 때문에. 프론트엔드가 다루는 부분이 연장선으로 여겨져서 익숙했었다. 아무래도 처음 웹 개발을 접하다보니 가장 자주 마주하는 웹페이지가 편한 이유도 있었다. 하지만 공부를.. 2023. 11. 18.
2022년 회고 (2) 풀스택 국비교육 수강기 케케묵은 지난글 👇 2023.02.01 - [💬/회고] - 2022년 회고 (1) 커뮤니티 기획자가 개발자를 꿈꾸게된 이야기 매우 늦었고 내용이 별거 없어서... 조금 부끄럽지만... gitpage에 있던 글을 끌고 왔습니다. 국비 교육 과정을 듣기로 한다 2022년 6월~10월 : 국비교육 수강 사실 지금 생각해보면 조금 가벼운 선택이었다. 즉, 도망갈 곳을 만들어 놓은 선택이었다. 어차피 커리어에서 1년정도 쉬기로 한거, 돈도 더 들지 않겠다 주말에는 지인의 카페에서 계속 알바를 하고 평일에는 9시부터 6시까지 풀스택 국비교육과정을 듣기로 한 선택말이다. 선택의 기준은 아주 간단했다. 시작하기에 부담이 없을 것, 곧 언제든 다시 돌아갈 수 있을 것 교육과정은 취업을 하기 유리할 것 (범용적일 것) 여.. 2023. 11. 18.
S3 업로드를 비동기로 처리하고 싶어요✊ : 반환이 있는 @Async를 사용할 때 주의할 것들.... 이 글은 Secondhand 프로젝트를 하며 트러블 슈팅하고 학습한 내용을 정리한 글입니다. 시작하며 Secondhand에 글을 작성할 때는 최대 10장의 이미지를 업로드할 수 있습니다. 이 기능을 구현하고 나서 가장 마음에 걸렸던 부분이 있는데요, 바로 이 10장의 이미지가 하나의 스레드에서 동기적으로 처리된다는 것입니다. 꽤 고화질인 이미지를 10장 한번에 처리를 하면 3초정도 소요되기도 합니다 👀.... 계속 마음에 걸렸던 코드라 이참에 리팩토링을 해보기로 했습니다. 개선 해보자 기존 로직 및 문제점 분석 원래 코드와 시퀀스 다이어그램을 먼저 공유하자면 다음과 같습니다. @Override public List uploadItemDetailImages(List request) throws ImageH.. 2023. 11. 6.