일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이펙티브 자바
- UML
- 자바
- 포트앤어댑터 아키텍처
- disjoint set
- 문자열
- equals
- dataframe
- 백준
- 스프링
- 알고리즘
- 파이썬
- pandas
- 비트마스크
- Redis
- java
- springboot
- DP
- dfs
- series
- spring security
- 위상정렬
- 세그먼트 트리
- 데이터 flow
- 다익스트라
- JPA
- 헥사고날 아키텍처
- docker
- BFS
- ddd
- Today
- Total
목록전체 글 (95)
코딩못하는사람
1.문제점 제작한 웹서비스의 반응시간이 엄청나게 길어지는 문제가 발생했다. 고가용성(High Availability)를 지키지 못한 예이다. 2.접근 반응시간이 길어지지만 결국에는 정상 API를 수행하는점을 바탕으로 로드밸런싱 과정에서 일어난 문제라고 추측하였다. 3.원인 로드밸런싱 해 놓은 서버를 가지고 있는 EC2가 서비스 기간이 만료되어 서버가 죽었던 것을 까먹고 있었다. 그에 따라서 라운드 로빈 방식으로 다운된 서버에 계속 부하를 보낸 후 default 설정만큼 대기하고 살아있는 서버에서 작업을 해온 것이다. (default 설정은 max_fails=1,fail_timeout=10이다.) 옵션 ip_hash : 같은 방문자로부터 도착한 요청은 항상 같은 업스트림 서버가 처리 할 수 있게 한다. w..
@Transactional 어노테이션을 AOP와 PSA의 관점에서 공부해보았다. AOP(Aspect Oriented Programming) @Transactional 어노테이션을 사용하면 별도의 트랜잭션 관련 코드없이 트랜잭션 서비스를 이용할 수 있다. 트랜잭션에 대한 공통 코드를 어노테이션이 AOP를 통해 대신 처리해주어 우리가 구현해야 할 비즈니스 로직에 집중할 수 있게 해주는 것이다. Spring에서는 Proxy pattern을 이용해 AOP를 구현한다. @Transactional을 사용하고 있는 aspect를 보자. @Transactional어노테이션이 붙어있는 곳에서 transactionalMethodExecution메서드를 실행하라는 aspect이다. transactionalMethodExec..
스프링 시큐리티를 활용하여 인증,인가를 처리할 때 @AuthenticationPrincipal를 쓰면 쉽게 UserDetails를 구현하여 만든 Principal 인스턴스를 얻을 수 있었다. 쉽게 사용했지만 어떻게 동작하는지 궁금해져 찾아 보았다. Spring Security에서 AuthenticationFilter를 거쳐 인증을 완료하게 되면 Authentication 인터페이스를 구현한 UsernamePasswordAuthenticationToken을 SecurityContextHolder에 설정하게 된다. @AuthenticationPrincipal는 스프링 시큐리티의 AuthenticationPrincipalArgumentResolver 클래스를 활용하여 SecurityContextHolder에 ..
동시성 문제란? 두 개 이상의 세션이 공통된 자원에 대해서 읽고 쓰는 작업을 할 때 발생할 수 있는 문제이다. 기본적으로 동시성 문제는 완전한 해결이 있는 것이 아닌 타협이 있다. 성능을 포기하고 정확성을 높이느냐, 정확성을 타협하고 성능을 높이느냐이다(ex 트랜잭션 격리 단계) JPA에서도 JPA Transaction의 동시성을 제어하고자 하는 방법이 있다. JPA는 객체를 조회하면 영속성 컨텍스트에 캐시하기 때문에 "일관성 없는 읽기"의 문제는 없다. 주로 해결해야 하는 문제는 "갱신 손실"이다. 갱신 손실을 해결하기 위한 두가지 방법이 있다. Optimistic Lock(낙관적 잠금) 세션1이 데이터를 읽어 왔더라도 다른 세션인 세션2도 해당 데이터에 자유롭게 접근할 수 있다. 하지만 세션2가 Wr..