taehee-kim-dev.log
로그인
taehee-kim-dev.log
로그인
우아한테크코스 3기 백엔드 Lv4 모의면접 대상 Lv3 학습로그 모음
김태희
·
2021년 8월 18일
팔로우
0
면접
우아한테크코스
학습로그
0
[QueryDSL] 동적 쿼리 작성
내용
링크
태그
[Log] Logging
내용
링크
태그
[Git] Submodule
내용
링크
태그
[배포] 무중단 배포
내용
링크
태그
[JPA] 일급 컬렉션 적용
내용
링크
태그
[DB] 마이그레이션
내용
링크
태그
[Cache] Ehcache, Scheduling 적용
내용
링크
태그
[SQL] 쿼리 최적화
내용
링크
태그
[QueryDSL] 동적 쿼리 작성
내용
QueryDSL을 사용해 동적인 조건에 따라 SQL 쿼리문을 생성하는 동적 쿼리를 작성했다.
하나의 쿼리문으로 여러 조건의 쿼리를 생성할 수 있었다.
객체의 함수를 참조하는 QueryDSL의 사용 방식이 가독성, 생산성, 유지보수성을 향상시켰다.
링크
https://github.com/woowacourse-teams/2021-cvi/blob/develop/backend/src/main/java/com/backjoongwon/cvi/post/domain/PostRepositoryImpl.java
태그
SQL, QueryDSL
[Log] Logging
내용
LogBack의 Log Appender를 사용해 애플리케이션의 로그를 남겼다.
로그 출력 조건 및 형식 설정과 파일 분리, 백업 조건을 세밀하게 설정할 수 있었다.
AWS CloudWatch 대시보드에 연동해, 터미널을 통한 EC2 인스턴스 접속 없이 대시보드에서 로그 파일들의 내용을 확인할 수 있게 했다.
링크
https://github.com/woowacourse-teams/2021-cvi/tree/develop/backend/src/main/resources
https://ap-northeast-2.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-2#dashboards:name=DASHBOARD-cvi-korea
태그
Log, LogBack
[Git] Submodule
내용
DB 계정, JWT secret key 등 보안이 필요한 파일들을 git submodule로 관리했다.
로컬, 테스트 서버, 서비스 서버 각각에 적용되는 보안 파일들의 관리 포인트가 많았다.
Submodule로 관리 포인트를 줄일 수 있었다.
링크
https://github.com/woowacourse-teams/2021-cvi/blob/develop/.gitmodules
태그
Git, 보안
[배포] 무중단 배포
내용
Jenkins와 shell script로 Blue-green 배포 방식을 적용해 서비스 서버와 테스트 서버를 무중단으로 배포했다.
서비스 사용자들은 중단 없이 업데이트된 서비스를, 프론트엔드 크루들은 중단 없이 업데이트된 테스트 서버의 API를 사용할 수 있었다.
링크
https://github.com/woowacourse-teams/2021-cvi/tree/develop/backend/deploy
태그
배포
[JPA] 일급 컬렉션 적용
내용
JPA Entity에 Entity에 관한 비즈니스 로직 함수가 너무 많아졌다.
Entity 컬렉션을 JPA의 @Embedded, @Embeddable 어노테이션을 사용해 일급 컬렉션화 시켰다.
관련된 비즈니스 로직들을 일급 컬렉션 내부로 숨겨 캡슐화 시킬 수 있었다.
링크
https://github.com/woowacourse-teams/2021-cvi/blob/develop/backend/src/main/java/com/backjoongwon/cvi/post/domain/Comments.java
태그
JPA, OOP
[DB] 마이그레이션
내용
로컬 개발 환경에서 이루어진 DB 업데이트를 테스트 서버, 서비스 서버에 모두 반영할 때 관리포인트가 많아 실수의 여지가 있었다.
DB 마이그레이션 툴 Flyway를 사용해 관리 포인트를 줄였다.
링크
https://github.com/woowacourse-teams/2021-cvi/tree/develop/backend/src/main/resources/db/migration
태그
DB
[Cache] Ehcache, Scheduling 적용
내용
국가 공공 데이터 포털 API로부터 전국 백신 접종 관련 대용량 데이터를 받아왔다.
데이터 양이 많아 API 호출 비용이 컸고, 이 데이터는 매일 아침 10시마다 업데이트 됐다. 또한 클라이언트 쪽에서는 이 데이터를 단순히 읽기만 했다.
Ehcache를 사용해 해당 데이터를 캐싱했다. 아침 10시마다 데이터가 업데이트되므로 Spring의 Scheduling을 사용해 캐싱 데이터를 업데이트했다. 클라이언트 측에서 API 요청을 했을 때의 지연 시간을 934ms 에서 24.44ms로 40배 이상 줄였다.
링크
https://github.com/woowacourse-teams/2021-cvi/blob/develop/backend/src/main/resources/ehcache.xml
https://github.com/woowacourse-teams/2021-cvi/tree/develop/backend/cache/data
https://github.com/woowacourse-teams/2021-cvi/blob/develop/backend/src/main/java/com/backjoongwon/cvi/publicdata/service/PublicDataService.java
태그
Cache
[SQL] 쿼리 최적화
내용
쿼리 최적화를 위해 fetch join, default_batch_fetch_size 설정을 사용했다.
Lazy loading으로 발생할 수 있는 N+1 select 등 여러 개의 쿼리 발생 문제를 fetch join으로 최적화했다.
JPA 엔티티의 필드에 두 개 이상의 엔티티 컬렉션이 있을 경우 default_batch_fetch_size 설정으로 쿼리를 최적화했다.
링크
https://github.com/woowacourse-teams/2021-cvi/blob/develop/backend/src/main/java/com/backjoongwon/cvi/post/domain/PostRepositoryImpl.java
https://github.com/woowacourse-teams/2021-cvi/blob/develop/backend/src/main/resources/application.yml
태그
SQL, JPA, QueryDSL
김태희
Web Back-End (Spring, JPA, AWS)
팔로우
이전 포스트
[OAuth]Spring Security 없이 카카오 로그인 구현하기
0개의 댓글
댓글 작성
관련 채용 정보
오케스트로
Front end Developer
오케스트로에서 클라우드 산업의 새로운 기준을 함께 만들어갈 Front end Developer를 찾습니다. 다양한 업무 경험을 통해 빠르게 성장할 수 있는 기회를 제공합니다.
랜딩
프론트엔드 개발자
AI 기반 디자인 툴을 개발하는 랜딩에서, 프론트엔드 개발자로서 Next.js 및 React Flow를 활용해 유연한 노드 시스템과 인터랙티브 UI를 구축하세요. 소규모 팀의 일원으로, 몰입 가능한 환경과 자유로운 휴가를 누리며 빠르게 성장하는 경험을 할 수 있습니다.
기아
[ICT] Backend Developer
웹 서비스 플랫폼의 백엔드 개발을 통해 효율적이고 안정적인 시스템을 설계하는 기회를 제공합니다. Java, Spring 프레임워크를 활용해 Agile 환경에서 함께 성장할 개발자를 기다립니다!