일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백트래킹
- 구현
- 브루트포스
- greedy
- 해시
- 깊이우선탐색
- 네트워크
- Spring
- boj
- 스프링
- DP
- 프로그래머스
- 해시맵
- switch
- 동적계획법
- DFS
- programmers
- 그리디
- Backtracking
- HashMap
- BFS
- 너비우선탐색
- Network
- 알고리즘
- 백준
- 이분탐색
- DynamicProgramming
- dynamic programming
- broadcast
- Algorithm
- Today
- Total
목록Spring (7)
옌의 로그
1. 서론: 연관관계, 그리고 성능 고민최근에 투입된 프로젝트는 다양한 도메인 간에 1:N 관계가 아주 많은 구조를 가지고 있었다.상품과 카테고리, 유저와 구매내역, 상품과 메타데이터 등 대부분의 엔티티가 서로 깊게 연관돼 있었고,그 연관관계들이 곧바로 화면 응답이나 API 출력으로 이어지다 보니,JPA의 Lazy Loading, N+1 문제, fetch join, open-in-view 설정 같은 키워드들이 일상처럼 따라다녔다. 특히, 연관된 데이터를 DTO로 변환해야 하는 경우가 많았는데, 이때마다 트랜잭션이 이미 종료돼 있어서 Lazy 객체 접근 시 LazyInitializationException이 터지는 일이 많았다. 그 과정에서 자연스럽게 다음과 같은 질문이 생겼다:지연 로딩은 어떻게 최적화할..
FCM 푸시 모듈 작업을 계기로 마주친 이벤트 기반 설계 이야기 1. 사용하게 된 배경최근 FCM을 활용한 푸시 알림 모듈을 구현하게 되었다.초기에는 단순히 서비스 로직 안에서 푸시 메시지를 생성하고 전송하는 sendPushMessage() 메서드를 직접 호출하는 방식으로 구현했는데, 이 방식에는 치명적인.. 구조적 문제가 있었다.푸시 메시지를 생성하고 저장하는 로직이 서비스의 트랜잭션 흐름에 함께 묶여서, 이로 인해 메세지 생성 트랜잭션이 롤백되면 메인 트랜잭션도 함께 롤백되는 상황이 발생하였다.(push는 로그 데이터 같이, 생성 실패하여 발송이 안되더라도 크게 문제없는 데이터인데 이로 인해 메인로직이 처리가 안되는 건 문제가 있는 상황이다) 물론 트랜잭션 전파 속성을 REQUIRES_NEW로 설정하..

https://inf.run/8u6a [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세 www.inflearn.com (본 게시글은 인프런 스프링 입문 강의에 의해 작성되었습니다.) 회원 웹 기능 - 홈 화면 추가 홈 컨트롤러 추가 src/main/java/hellospring/controller/HelloController.java package yenie.hellospring.controller; import org.springframework.stereotype.C..

https://inf.run/8u6a [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세 www.inflearn.com (본 게시글은 인프런 스프링 입문 강의에 의해 작성되었습니다.) 컴포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원 서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자 회원 컨트롤러에 의존관계 추가 package yenie.hellospring.controller; import org.springframework.stereotype.Con..

https://inf.run/8u6a [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세 www.inflearn.com (본 게시글은 인프런 스프링 입문 강의에 의해 작성되었습니다.) 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 데이터 저장소(DB) 선정되지 않음 목적에 따라 선택할 DB가 달라진다 일반적인 웹 애플리케이션 계층 구조 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 비즈니스 도메인 객체를 가지고 핵심 ..

https://inf.run/8u6a [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세 www.inflearn.com (본 게시글은 인프런 스프링 입문 강의에 의해 작성되었습니다.) 스프링 웹 개발 기초 정적 컨텐츠 Welcome Page를 만들었던 것 처럼 서버에서 무언가 하는 것 없이 파일을 웹 브라우저에 그대로 내려주는 것을 뜻함 (파일 자체를 client에게 그대로 전달) resources/static/hello-static.html 정적 컨텐츠 입니다. 정적 컨..

https://inf.run/8u6a [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세 www.inflearn.com (본 게시글은 인프런 스프링 입문 강의에 의해 작성되었습니다.) 프로젝트 생성 사전 준비 Java 11 설치 (참고 : https://llighter.github.io/install-java-on-mac/) 더보기 brew update brew tap adoptopenjdk/openjdk brew install --cask adoptopenjdk11 ID..