우아한테크코스 6기에서의 성장 기록 저장소입니다.
⛳️ 총대마켓
- 저렴한 구매를 위해 대량 구매해야 하는 불편에서 시작된 공동구매 거래 앱 서비스 (AN 3명 BE 4명)
Java
Spring Boot
Spring Data JPA
MySQL
Github Actions
Docker
AWS EC2
AWS S3
AWS CloudWatch
Pull Request | |
---|---|
1 | 쿼리 최적화 및 인덱스로 30배 성능 개선 |
2 | FCM 푸시알림 도입 |
3 | FCM 푸시알림 비동기 처리로 20배 성능 개선 |
4 | 비관적 쓰기 잠금으로 동시성 이슈 해결 |
5 | JPA N+1 문제 해결 |
6 | 비동기 LazyInitializationException 해결 |
7 | QueryDsl 도입으로 중복 쿼리 개선 |
- [협업] 한 달 간의 고진감래
- [프로젝트] 쿼리 최적화와 인덱스로 API Latency 30배 개선하기
- [프로젝트] FCM 푸시알림 도입기 | 안드로이드 코틀린 & 백엔드 자바
- [프로젝트] 동시성 이슈 해결 과정: Spring Event로 비동기 처리하기
- [프로젝트] 트랜잭션이 롤백될 때 이미 발행된 이벤트를 어떻게 처리할까: @TransactionalEventListener
- [프로젝트] QueryDSL을 도입하면 무엇이 좋을까 (from JPQL)
- [프로젝트] JPA N+1 문제 해결하여 성능 개선하기: LAZY 로딩 전략, fetch join
- [프로젝트] 비동기 스레드 내부에서 발생한 LazyInitializationException 해결하기
- [프로젝트] OG 메타 태그 크롤링하여 이미지 추출하기 | Jsoup 구현
- [인프라] 개발 환경 CI/CD 파이프라인 구축기 | Github Actions, Self-hosted Runner, Docker 기술 선택 이유
- [학습] 인덱스는 만능인가
- [학습] @TransactionalEventListener: 학습테스트 만들어 동작 방식 확인해보기
- [학습] Swagger vs Spring REST Docs
- 익숙하게 사용하고 있던 라이브러리 직접 구현해보기
미션 | PR1 | PR2 | PR3 | PR4 | |
---|---|---|---|---|---|
1 | Tomcat 구현하기 | 1 - 2단계 | 3단계 | 4단계 | |
2 | @MVC 구현하기 | 1단계 | 2단계 | 3단계 | |
3 | JDBC 라이브러리 구현하기 | 1단계 | 2단계 | 3단계 | 4단계 |
- 페어 프로그래밍 및 코드 리뷰 등 협업 문화 경험
미션 | PR1 | PR2 | |
---|---|---|---|
1 | 자동차 경주 | 1단계 | 2단계 |
2 | 사다리타기 | 1단계 | 2단계 |
3 | 블랙잭 | 1단계 | 2단계 |
4 | 체스 | 1 - 2단계 | 3 - 4단계 |
- 페어 프로그래밍 및 코드 리뷰 등 협업 문화 경험
미션 | PR1 | PR2 | |
---|---|---|---|
1 | 방탈출 예약 관리 | 1 - 3단계 | 4 - 10단계 |
2 | 방탈출 사용자 예약 | 1 - 3단계 | 4 - 6단계 |
3 | 방탈출 예약 대기 | 1 - 2단계 | 3 - 4단계 |
4 | 방탈출 결제/배포 | 1단계 | 2 - 4단계 |
미션 | |
---|---|
1 | 숫자 야구 |
2 | 자동차 경주 |
3 | 로또 |
4 | 크리스마스 프로모션 |
5 | 최종코테 - 개발자 비상근무 |
제목 | |
---|---|
1 | 나는 느리고 시간은 빠르다 |
2 | 적당한 조급함은 게으르지 않을 양분이 된다 |
3 | 용감한 쫄보 |
4 | 인덱스는 만능인가 |
- 우아한테크코스 과정을 진행하며 학습한 내용을 공유하는 시간
- MySQL 옵티마이저 실행계획 확인 방법에 대해 발표
