일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로래머스
- Spring
- 백준
- 백준 17626
- 백준 16236
- spring cloud
- springboot
- 백준 15685
- Spring Boot
- re.split
- 프로그래머스
- 백준 파이썬
- 백준 16235
- sql 기술면접
- 파이썬
- JVM
- Kotlin
- 백준 16719
- JPA
- Coroutine
- java
- 백준 19238
- 백준 17779
- 웹어플리케이션 서버
- java 기술면접
- MySQL
- spring security
- spring oauth
- with recursive
- Today
- Total
목록분류 전체보기 (287)
시작이 반
Monolith vs Microservice Monolith - 어플리케이션을 개발함에 있어서 모든 요소를 하나의 커다란 소프트웨어에 포함 하나의 큰 건축물(?) 분리를 못한다. Microservice - 어플리케이션을 구성하는 각각의 구성요소를 분리하여 개발하고 운영한는 방식 - 기능들이 독립적이고 최소화 되어있기 때문에 유지보수, 변경사항 적용하는데 유리 - 비지니스기능으로 구축되고 자동화된 배포시스템을 사용 CI/CD 각기능을 하는 레고들이 모여서 하나의 어플리케이션이 되는것이라고 생각하자 amazon 과 NETFLIX의 Microservice 예시 하나의 점이 모두 마이크로 서비스이다. 이러한 서비스들이 모두 연결되어 하나의 어플리케이션을 구성한다. Microservice의 특징 Challenge..
MSA에 대해 포스팅 하기 전에 Cloud Native에 대해 알아보자 Cloud Native Architecture 특징 확장 가능한 아키텍처 시스템의 수평적 확장 시스템 부하 분산, 가용성 보장 서비스 어플리케이션 단위 패키지 (컨테이너 기반 패키지) 모니터링 탄력적 아키텍처 어플리케이션의 각기능을 서비스로 생성 - 통합 - 배포을 CI/CD자동화 파이프라인을 통해 처리, 환경 변화 대응시간 단축 작게 분리된 독립적인 서비스들이 분할된 구조 무상태 통신 프로토콜, 종속성 최소화 서비스 추가와 삭제 자동으로 감지 변경된 서비스 요청에 따라 사용자 요청 처리 (동적 처리) 장애 격리 특정 오류가 나더라도 다른 서비스에 영향을 주지 않는다. Cloud Native Application CI/CD - 지속적..
OSIV ON 최초 데이터베이스 커넥션 시작부터 API응답이 끝날 때 까지 영송성 컨텍스트와 데이터베이스 커넥션 유지 만약 Controller에서 외부 API를 호출하면 API대기 시간만큼 커넥션 리소스 반환 못함 - 자원낭비 OSIV OFF 트랜잭션을 종료할 떄 영송성 컨텍스트를 닫고, 데이터베이스 커넥션도 반환 - 리소스 낭비x 지연로딩을 트랜잭션 안에서 처리해야함 OSIV를 끄면 컨트롤러에 있던 로직들을 서비스로 옮겨서 Transactional(readOnly = true)를 사용하여 로직을 사용한다. ex) OrderService OrderService: 핵심 비즈니스 로직 OrderQueryService: 화면이나 API에 맞춘 서비스 (주로 읽기 전용 트랜잭션 사용) 고객 서비스의 실시간 AP..
페치 조인(fetch join)은 엔티티를 한번에 조회하게 최적화를 해준다. x To one 관계에서는 join fetch 를 해도되지만 one To many 에서는 Data 수가 many쪽에 맞춰 지면서 뻥튀기가 된다. public class Order { @Id @GeneratedValue @Column(name = " order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List orderItems = new ArrayList(..
Table 정보 orders member delivery 찾을 api 정보 : orders @GetMapping("/api/v2/simple-orders") public List orderV2(){ //ORDER 2개 List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result; } 결과: api정보 @Data static class SimpleOrderDto{ private Long orderId; private String name; private Loc..
생각나는 것 정리... XToOne 일 경우에는 LAZY 설정을 해야 한다.!!!! 꼭 @XToOne (fetch = FetchType.LAZY) 양방향 연관 관계일 때 API로 호출이 된다면 무한루프가 일어날것이다. public class Order { @Id @GeneratedValue @Column(name = " order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; } public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @OneToMany(..
준영속성 상태만드는 법 em.detach(entity) 특정 엔티티만 준영속 상태로 전환 em.clear() 영속성 컨텍스트를 완전히 초기화 em.close() 영속성 컨텍스트를 종료 준영속 엔티티? 영속성 컨텍스트가 더는 관리하지 않는 엔티티 ex) 임의로 만들어낸 엔티티가 식별자를 가지고 있는경우, db에서 데이터를 찾아 해당 데이터로 new Entity()를 만든 엔티티 준영속성 엔티티를 수정하는 2가지 방법 변경 감지 기능 사용 병합 사용 변경 감지 기능 사용 @Transactional void update(Item itemParam) { //itemParam: 파리미터로 넘어온 준영속 상태의 엔티티 Item findItem = em.find(Item.class, itemParam.getId())..
@Valid : 객체의 값을 검증해준다. @PostMapping("/members/new") public String create(@Valid MemberForm form) { Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); memberService.join(member); return "redirect:/"; } @Getter @Setter public class MemberForm { @NotEmpty(message = "회원 이름은 필수 입..