우아한테크코스 3기 백엔드 Lv4 모의면접 대상 Lv3 학습로그 모음

김태희·2021년 8월 18일
0
post-thumbnail

[QueryDSL] 동적 쿼리 작성

내용

  • QueryDSL을 사용해 동적인 조건에 따라 SQL 쿼리문을 생성하는 동적 쿼리를 작성했다.
  • 하나의 쿼리문으로 여러 조건의 쿼리를 생성할 수 있었다.
  • 객체의 함수를 참조하는 QueryDSL의 사용 방식이 가독성, 생산성, 유지보수성을 향상시켰다.

링크

태그

SQL, QueryDSL


[Log] Logging

내용

  • LogBack의 Log Appender를 사용해 애플리케이션의 로그를 남겼다.
  • 로그 출력 조건 및 형식 설정과 파일 분리, 백업 조건을 세밀하게 설정할 수 있었다.
  • AWS CloudWatch 대시보드에 연동해, 터미널을 통한 EC2 인스턴스 접속 없이 대시보드에서 로그 파일들의 내용을 확인할 수 있게 했다.

링크

태그

Log, LogBack


[Git] Submodule

내용

  • DB 계정, JWT secret key 등 보안이 필요한 파일들을 git submodule로 관리했다.
  • 로컬, 테스트 서버, 서비스 서버 각각에 적용되는 보안 파일들의 관리 포인트가 많았다.
  • Submodule로 관리 포인트를 줄일 수 있었다.

링크

태그

Git, 보안


[배포] 무중단 배포

내용

  • Jenkins와 shell script로 Blue-green 배포 방식을 적용해 서비스 서버와 테스트 서버를 무중단으로 배포했다.
  • 서비스 사용자들은 중단 없이 업데이트된 서비스를, 프론트엔드 크루들은 중단 없이 업데이트된 테스트 서버의 API를 사용할 수 있었다.

링크

태그

배포


[JPA] 일급 컬렉션 적용

내용

  • JPA Entity에 Entity에 관한 비즈니스 로직 함수가 너무 많아졌다.
  • Entity 컬렉션을 JPA의 @Embedded, @Embeddable 어노테이션을 사용해 일급 컬렉션화 시켰다.
  • 관련된 비즈니스 로직들을 일급 컬렉션 내부로 숨겨 캡슐화 시킬 수 있었다.

링크

태그

JPA, OOP


[DB] 마이그레이션

내용

  • 로컬 개발 환경에서 이루어진 DB 업데이트를 테스트 서버, 서비스 서버에 모두 반영할 때 관리포인트가 많아 실수의 여지가 있었다.
  • DB 마이그레이션 툴 Flyway를 사용해 관리 포인트를 줄였다.

링크

태그

DB


[Cache] Ehcache, Scheduling 적용

내용

  • 국가 공공 데이터 포털 API로부터 전국 백신 접종 관련 대용량 데이터를 받아왔다.
  • 데이터 양이 많아 API 호출 비용이 컸고, 이 데이터는 매일 아침 10시마다 업데이트 됐다. 또한 클라이언트 쪽에서는 이 데이터를 단순히 읽기만 했다.
  • Ehcache를 사용해 해당 데이터를 캐싱했다. 아침 10시마다 데이터가 업데이트되므로 Spring의 Scheduling을 사용해 캐싱 데이터를 업데이트했다. 클라이언트 측에서 API 요청을 했을 때의 지연 시간을 934ms 에서 24.44ms로 40배 이상 줄였다.

링크

태그

Cache


[SQL] 쿼리 최적화

내용

  • 쿼리 최적화를 위해 fetch join, default_batch_fetch_size 설정을 사용했다.
  • Lazy loading으로 발생할 수 있는 N+1 select 등 여러 개의 쿼리 발생 문제를 fetch join으로 최적화했다.
  • JPA 엔티티의 필드에 두 개 이상의 엔티티 컬렉션이 있을 경우 default_batch_fetch_size 설정으로 쿼리를 최적화했다.

링크

태그

SQL, JPA, QueryDSL


profile
Web Back-End (Spring, JPA, AWS)

0개의 댓글