일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- 자료구조
- Kafka
- null
- MSA
- DB
- gatway
- 스레드 풀
- HTTP
- 삭제 이상
- Redis
- 자바
- Kotlin
- 캐시 오염
- 비관적 락
- 낙관적 락
- java
- 3-way handshaking
- 정규화
- 페이지네이션
- Spring
- 갱신 이상
- 삽입 이상
- well-know port
- buildSrc
- Dirty Checking
- AWS
- JPA
- 네트워크
- ocp
- Today
- Total
728x90
목록
728x90
전체 글 (72)
어 나 갱수.

H2 Console이 Spring Security 필터를 통과할 때, 아래 사진과 같이 localhost에서 연결을 거부한다는 에러가 발생합니다. H2 콘솔은 iframe을 통해 화면을 구성합니다. 브라우저에서 iframe에 대한 모든 요청을 허용하면 디도스 공격, 클릭재킹 공격에 취약해질 수 있습니다. 따라서 브라우저는 요청 응답에 있는 X-Frame-Options 헤더의 내용에 따라 iframe에서의 요청을 허용할 것인지 허용하지 않을 것인지 판단합니다.Spring Security는 기본적으로 X-Frame-Options 응답헤더를 DENY 로 설정하고 있습니다. 따라서 모든 브라우저는 이나 태그로 페이지를 표시하는 부분을 볼 수 없다는 것입니다. 아래와 같이 SecurityConfig에 head..

OCP를 통해 기능 확장에 강하고, 외부 변경에 강건한 소프트웨어를 만들고자 로버트 마틴이 명명한 객체지향 5대 원칙 중 하나입니다. OCP는 소프트웨어를 설계하면서, 기능이나 모듈의 확장에 대해서는 개방(OPEN) 되어야 하고, 기존의 것의 변경에 대해서는 폐쇄(CLOSE) 되어야 한다는 원칙입니다.간단하게 말하면, 새로운 기능이 추가되더라도 기존의 코드를 변경하지 않고도 확장이 가능해야 한다는 점입니다. 아래의 코드는 OCP를 적용시키지 못한 코드라고 말할 수 있습니다. JavaMailSendPort는 제대로 추상화된 인터페이스라고 불릴 수 없습니다. 추상화된 인터페이스에서 구현 라이브러리인 JavaMail의 이름을 사용해 버렸기 때문에 1:1로 밖에 구현클래스를 사용할 수밖에 없기 때문입니다. 다양..

프로젝트를 하면서 캐싱 기능을 추가해 보기로 했습니다. Spring에서는 @Cacheable, @CachePut, @CacheEvict 어노테이션을 통해서 캐시를 구현할 수 있습니다. Spring에서 캐시를 사용하려면 캐싱 기능을 사용할 스프링부트 애플리케이션에@EnableCaching이라는 어노테이션을 붙여준다. 이 어노테이션을 붙여주면 이제 해당 애플리케이션에서 캐싱 기능을 활성화시켜서 캐시를 통해 데이터를 불러올 수 있습니다.@SpringBootApplication@EnableCachingclass V2Application{ val log = LoggerFactory.getLogger(this::class.java.name)!! @PostConstruct fun timeZone() { TimeZo..

동시성(Concurrency)동시성은 여러 작업이 시간을 나누어 사용하여 마치 동시에 실행되는 것처럼 보이게 하는 기술입니다. 동시에 실행하는 것이 아니라 CPU가 작업마다 시간을 분할해 적절하게 컨텍스트 스위칭을 해서 동시에 실행되는 것처럼 보이게 합니다.동시성의 가장 중요한 목표는 효율을 좋게 하기 위함이 있습니다. 병렬성(Parallelism)병렬성은 동시성처럼 여러 작업이 동시에 이루어지는 것 처럼 보이게 하는 것이 아니라 실제로 여러 개의 작업들을 동시에 처리하는 것을 말합니다. 병렬성은 멀티코어 컴퓨터에서 많이 사용되며, 실행 시간을 줄이거나 처리량을 늘리는 데에 사용된다.병렬성을 통해, 대규모 데이터 처리나 복잡한 계산 작업을 빠르게 처리할 수 있습니다. 차이점동시성과 병렬성의 가장 큰 차..

Cache란많은 시간이나 연산이 필요한 일에 대한 결과를 저장해 두는 것한번 읽은 데이터를 임시 저장, 필요에 따라 전송, 갱신, 삭제하는 기술임시로 저장해 두고 같은 데이터를 불러올 때 빠르게 불러옴Cache의 문제점캐시를 사용하게 된다면 데이터 정합성 문제가 발생할 수 있습니다.데이터 정합성문제란 간단하게 말하면 캐시에 있는 데이터의 값과 데이터베이스에 있는 데이터의 값이 다른다는 것을 의미합니다.캐시를 사용하지 않았을 때는 그냥 데이터베이스에서 값을 가져오면 되기 때문에 정합성 문제가 발생하지 않았지만 캐시에 데이터가 있다면 캐시에서 데이터를 가져오기 때문에 캐시와 데이터베이스에 값이 다르다면 데이터 정합성 문제가 발생할 수 있습니다.Cache 전략캐싱 전략은 웹 서비스 환경에서 시스템 성능 향상을..

오늘은 클린 아키텍처에 대해 알아보겠습니다. 평소에 듣기로는 "유지보수에 편리한 아키텍처", "테스트하기 편리한 아키텍처" 정도로만 알고 있습니다. 오늘은 좀 더 자세히 알아보겠습니다. Clean Architecture'추상화 개념'으로써 관심사를 분리시키고 의존도를 낮추는 것에 목적을 둔 아키텍처입니다. 클린 아키텍처는 각 요소들을 분리하고 변화에 유연하게 대처할 수 있는 아키텍처 설계입니다.클린 아키텍처를 적용함으로써 개발자는 비즈니스 로직과 외부 요인과의 결함도를 낮춤으로써, 테스트에 편리하고 유지보수에 효율적인아키텍처를 구축할 수 있습니다. 이 요인은 장기적으로 봤을 때 애플리케이션의 유지보수 비용을 줄임과 동시에, 품질을 향상할 수 있습니다. 사용하는 이유소스코드를 변경할 때 안정성이 높아집니다..

IP(Internet Protocol)웹 서버가 다른 컴퓨터에서 실행되고 있기 때문에, 웹 브라우저가 웹 서버에 연결하려면, 웹 서버가 실행 중인 컴퓨터의 주소를 알아야 하는데 이 주소를 IP주소로 합니다. 이러한 IP주소는 형식을 외우거나 구별하기 어렵기 때문에, DNS를 통해 구별하기 쉬운 도메인 주소로 변환된다.도메인주소로 웹 브라우저에 접속할 때도 DNS를 통해 IP주소를 알아내고 통신을 이어갑니다. Port포트는 “논리적인 접속장소”를 뜻하며, 인터넷 프로토콜인 TCP/IP를 사용할 때 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용한다.네트워크 상에서 통신을 할 때 IP 주소를 바탕으로 해당 서버가 있는 컴퓨터에 접근하게 된다. IP 주소가 건물 주소라면 포트 ..

AOPAOP에 대해 먼저 알아보자면 관전 지향 프로그래밍이라는 뜻으로, 코드를 핵심 기능과 공통 기능으로 나눈 후에 핵심 기능에서 따로 빼놓은 공통 기능을 불러와 적용하는 방법입니다.로깅 작업프로젝트를 하면서 로그를 찍는 거는 아주 중요한 역할입니다. 로그는 에러가 난 이유를 찾거나 값을 확인하는데 중요한 역할을 합니다.위의 코드와 같이 Controller 코드에 로그를 추가할 수 있습니다. 하지만 위와 같이 Controller method마다 로그를 찍으면 문제가 생깁니다.중복된 코드 증가(모든 controller 메서드에 로그를 추가해야 한다.)실수로 로그를 찍지 않으면 로그가 찍히지 않는다.그래서 위와 같은 상황에서 좀 더 효율적으로 하려면 핵심기능(회원가입)과 공통기능(로깅 작업)을 분리해서 작업..