일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MSA
- mapping
- spring
- codedeploy
- goorm
- serverless
- aws
- codebuild
- QueryDSL
- bootcamp
- CodeCommit
- 스터디
- CICD
- s3
- backenddeveloper
- 오블완
- data
- backend
- nosql
- goorm x kakao
- Cache
- jpa
- 개발자
- 자격증
- DynamoDB
- Redis
- Spring Boot
- 티스토리챌린지
- orm
- Docker
- Today
- Total
목록spring (15)
gony-dev 님의 블로그

이전 포스팅에서는 Cache-Control Header를 이용한 캐싱 기능을 사용해봤다.이번에는 서버 내부에서 Spring Boot Cache를 이용하여 캐싱 기능을 이용해보도록 하겠다.Spring Boot Cache vs. Cache-Control Header과연 둘의 차이는 뭘까?아래의 표를 통해 알아보자! Spring Boot CacheCache-Control Header위치서버 내부클라이언트 or 중간 캐시대상메서드 실행 결과HTML 응답 전체목적서버 처리 속도 향상네트워크 트래픽 감소설정 위치Java 코드HTTP 응답 헤더TTL 관리Redis TTL 사용max-age, no-cache 등의 값으로 결정 결론적으로 쓰는 목적과 사용 범위가 다르기 때문에 둘을 비교하기에는 다소 애매하지만이 둘을 함..

Overview일전에 다루었던 Redis는 캐싱 기능을 위해 사용하는 In-memory 데이터 저장소이다.우리는 자주 사용되는 데이터를 캐싱하여, 이후 발생하는 요청 시에 데이터베이스에 직접 접근하지 않고 데이터를 제공할 수 있다.Redis 같은 외부 라이브러리가 아닌 스프링 프로젝트 내부에서 헤더를 이용하여 캐싱을 하는 방법도 있다.이에 Cache-Control Header에 대해 알아보자.1. Cache-Control Header개요설명하기에 앞서 클라이언트-서버의 요청 플로우에 대해 알아보자.클라이언트는 서버와 HTTP를 통해 통신을 하여 데이터를 가져오고, 이를 사용자에게 제공한다. 이때 클라이언트는 네트워크를 거치는 시간, 서버는 요청을 처리하는데 시간이 걸린다.만일 클라이언트가 요청한 데이터가..

이번에는 드디어 1회차 프로젝트를 마무리 짓는 글이다!많은 이슈가 있었고, 팀원간에 문제를 해결하는 과정들이 있었지만 어찌저찌 잘 마무리한 것 같다.그럼 각설하고 1회차 프로젝트에 대한 마무리를 진행해보겠다. 이전 포스트에서는 docker-compose를 통해 컨테이너를 실행시켜 msa 환경이 잘 실행되는지 확인하고 테스트해보았다.다른 문제는 없었지만 계정을 로그아웃하고 재접속을 시도하였을 때 이전에 생성하였던 데이터 변경 사항이 적용이 되지 않아 아무 데이터도 저장되지 않았던 오류가 있었다.그래서 다양한 원인을 유추해 보았다. 추측1. ajax 호출위의 사진들은 Login 시 클라이언트 측에서 발생하는 진행상황이다.login을 진행하면 OAuth2 토큰을 받아와 유저 정보를 가져온다.이때 정보를 가져오..

지난 번에는 Maven에서 Gradle로 프로젝트를 변경하는 과정을 진행해보았다.이번에는 내가 맡은 account-service 모듈을 리팩터링하는 과정을 살펴보겠다. piggymetrics 레거시 코드들의 특징은 다음과 같다.전체적으로 Lombok을 사용하지 않아 코드로 직접 구현하는 귀찮은 과정을 진행하였고, 오류 발생 시 클라이언트에게 반환하는 Exception도 제대로 구현되어 있지 않는 등 수정할 부분들이 많아 보였다.(오히려 좋아)하나씩 뜯어 고쳐보겠다.AccountControllerController 클래스의 코드 리팩터링 부분은 다음과 같다.1. 패키지별 API의 분리2. 원시 Mapping 사용이들을 수정하면 다음과 같아진다.@RequiredArgsConstructor@RestContro..

지난 시간에는 스프링 데이터 JPA와 Querydsl의 기능을 비교하고,사용자 정의 리포지토리를 만들어 Querydsl을 상속받는 인터페이스를 구현보았다.이번에는 마지막 강의 정리로 복잡한 실무 환경에는 알맞지 않지만 스프링 데이터에서 제공하는 기능들을 살펴보겠다.인터페이스 지원 - QuerydslPredicateExecutorQuerydslPredicateExecutor는 인터페이스는 스프링 데이터 JPA에 Querydsl을 사용하기 위해 제공되는 기능이다.이를 사용하기 위해서는 사용하고 있는 인터페이스에 상속하면 된다!MemberRepository.javapublic interface MemberRepository extends JpaRepository, MemberRepositoryCustom, Q..

지난 시간에는 Repository를 통해 순수 JPA를 만들고 이를 Querydsl과 비교하는 시간을 가졌다.이번에는 Spring Data JPA를 이용한 방법과 Querydsl과의 차이를 알아보는 시간을 가져보도록 하겠다. 스프링 데이터 JPA 리포지토리로 변경이제 우리는 JpaRepository를 상속받은 인터페이스를 통해 제공되는 메서드로 간단한 쿼리를 조회할 수 있다! MemberRepositorypublic interface MemberRepository extends JpaRepository { // select m from Member m where m.username = ? List findByUsername(String username);}문득 코드를 보면 이런 생각을 할 수도..

카카오 x 구름 부트캠프의 회고록 2회차이다!지난 시간에는 간단한 프로젝트의 소개와 MSA를 사용하는 이유에 대해 알아보았다.MSA는 서비스의 수평적 확장과 독립성을 위해 사용하는 아키텍쳐로 팀 간의 협력을 용이하게 하고, 유지보수에 특화되어 있다는 특징이 있었다.이번 시간에는 Spring에서 MSA를 사용하기 위해 필요한 요소들을 알아보도록 하자!1. Spring Cloud MSA ComponentSpring Cloud GatewayURL 주소에 대해 여러 세부 경로에 따라 각각의 스프링부트 어플리케이션에 분배하는 역할을 수행한다.Spring Cloud Eureka Server모니터링 서버로 Eureka Client 설정을 해둔 서버를 Eureka Server에 명시한다.모니터링 기능과 함께 Sprin..

금일부터 카카오 x 구름 부트캠프 1회차 프로젝트 회고록을 작성하려고 한다.아직 개발에 완전히 익숙하지 않기 때문에 글을 작성하며 배운 내용을 복습해 보일 예정이다. 프로젝트 주제는 다음과 같다.협업을 통한 실시간 버그 해결 프로젝트는 실제 시장에서 사용되는 소프트웨어를 클론 코딩하여 디버깅과 최적화를 수행하는 것을 목표로 합니다.이 프로젝트를 통해 학생들은 백엔드 시스템에서 발생하는 버그와 성능 문제를 발견하고 해결하는 방법을 학습하며, 배포 및 유지보수 과정을 포함한 소프트웨어 개발 전 과정을 경험합니다.팀 협업을 기반으로 문제를 해결하며, 에러 보고서와 해설지를 작성해 서로의 작업을 평가하고 개선합니다.우리는 깃허브에서 적합한 프로젝트를 찾았고, piggyMetrics라는 프로젝트를 최적화하기로 하..

지난 시간에는 querydsl을 이용하여 원하는 프로젝션 대상에 따라 결과를 효율적으로 반환하는 방법을 배웠다.이번에는 동적 쿼리와 성능 최적화를 통한 조회에 대해 배워보겠다. 순수 JPA 리포지토리와 QuerydslEntityManager와 Querydsl로 동일한 쿼리를 작성했을 때를 비교해보자!다음은 리스트 전체를 조회하는 "findAll()"과 username에 따른 결과를 조회하는 "findByUsername()"을 각각 순수 JPA와 Querydsl로 구현해놓은 것이다.public List findAll(){ return em.createQuery("select m from Member m", Member.class).getResultList();}public List findAll_Qu..

2024.12.06 - [DBMS] - [Redis] Connection Mode-1이전 글에서 Connection Mode의 다음 모드들을 알아보았다.1. Redis Standalone(default)2. Master/Slave3. Redis Sentinel이번 포스트에서는 미처 다루지 못한 Redis Cluster를 알아보고,모드들의 조합들이 어떤 이점을 취하는지 알아보자! 1. Redis ClusterRedis Cluster는 RedisConnection의 확장이라고 생각하면 된다.대규모 데이터 처리를 위한 "수평적 확장"을 사용하며, 데이터를 여러 노드에 분산 저장하는 역할을 한다.노드 간 자동 복제를 통해 데이터 안정성을 유지시키고, 일부 노드 장애 시에도 데이터 접근이 가능하다.이전 포스트에서..