
CloudFront? AWS에서 제공하는 CDN(콘텐츠 전송 네트워크) 서비스 CDN? 클라이언트가 콘텐츠를 요청할 때 원본 데이터를 가진 오리진 서버가 응답을 주는 대신 클라이언트와 더 가까운 곳에 존재하는 CDN 서버가 대신 응답을 주기 때문에 더 빠른 속도로 콘텐츠를 전달할 수 있다. 오리진 서버에 갈 요청을 CDN 서버들이 분산해서 처리하기 때문에 오리진 서버에 대한 트래픽이나 부하도 줄일 수 있다. 오리진 서버 : 콘텐츠 원본 데이터를 가진 서버 ex) S3, HTTP 웹 서버 등 CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공한다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이..
#살아있다 #자프링외길12년차 #코프링2개월생존기를 보고 정리한 내용입니다. 코틀린의 철학 코틀린은 자바와의 상호운용성에 초점을 맞춘 실용적이고 간결하며 안전한 언어이다. 간결성 언어가 간결하다는 건 그 언어로 작성된 코드로 읽을 때 의도를 쉽게 파악할 수 있다는 의미다. data class Person { val id: UUID, val firstname: String, val lastname: String, } 데이터 보관을 목적으로 사용하는 클래스가 필요할 때는 class 앞에 data를 붙여 정의한다. 프로퍼티에 대한 getter(), setter(), equals(), hashCode(), toString(), copy(), componentN() 메서드를 컴파일 시점에 자동으로 생성한다. Ja..

어디 가서 코프링 매우 알은 체하기를 보고 정리한 내용입니다. 1. 코틀린 코틀린이란? JVM, 안드로이드, 자바스크립트 및 네이티브를 대상으로 하는 정적 타입 지정 언어 젯브레인즈에서 개발한 오픈 소스 (아파치 라이선스 2.0) OO 스타일과 FP 스타일 모두 사용할 수 있으며 두 요소를 혼합하여 사용할 수 있다. 간결하고 실용적이며 안전하고 기존 언어와의 상호 운용성을 중시한다. (+ 코루틴) "코틀린은 단순히 JVM 언어가 아니라, 멀티플랫폼 언어다" => 코틀린 코드로 잘 작성하면 JVM상에서도, 자바스크립트에서도, 네이티브에서도 동작시킬 수 있다. [이미지 출처] : https://kotlinlang.org/docs/multiplatform.html#how-kotlin-multiplatform-..

프록시 기반의 AOP 스프링에서 AOP를 학습할 때 프록시 기반의 AOP란 말을 한 번쯤은 들어봤을 것이다. 현재 스프링은 프록시 기반의 AOP를 구현할 때 CGLIB를 사용하는데, 핵심은 런타임시 프록시 객체를 생성하는 다이나믹 프록시다. 도대체 프록시는 무엇이고, Java의 리플렉션을 사용한 JDK 다이나믹 프록시, CGLIB의 MethodProxy를 사용한 다이나믹 프록시가 어떤 차이가 있는지 알아보자. 프록시 패턴 프록시(Proxy)는 '대리', '중계' 라는 의미다. 클라이언트는 타겟에게 요청을 보내지만 실제로는 프록시가 요청을 대신 받는다. 실제 요청을 수행하는 타겟의 기능은 프록시 손에 달렸다. 위임해서 기능을 수행할 수도 있고, 위임하지 않고 클라이언트에게 다른 응답을 줄 수도 있다. 실제..

스트림(Stream)은 '작은 하천' 혹은 '시냇물'이라는 뜻의 단어이고 프로그래밍 언어에서는 주로 어떤 데이터의 흐름을 말한다. (데이터를 담고 있는 저장소(컬렉션) x) java.io의 Stream이 아니라, java8에 나온 java.util의 Stream API를 말한다. 스트림 API의 주된 목적은 매우 복잡하고 어려운 데이터 처리 작업을 쉽게 조회하고 필터링하고 변환하고 처리할 수 있도록 하는 것이다. 스트림 특징 스트림은 불변 객체다. Stream 객체의 메서드 호출 결과로 리턴 받은 Stream 객체는 새로 생성한 데이터다. 불변인 이유는 Stream은 중간 연산 작업과 함께 병렬 처리가 가능하기 때문에 데이터 정합성을 확보하기 위해서다. 중간 연산(Intermediate operation..

WebSocket 웹에서 사용하는 소켓 웹소켓은 HTTP와 같이 OSI 모델의 7계층에 위치하며, 4계층의 TCP에 의존한다. 웹소켓 연결 수립 과정(=핸드셰이크)은 HTTP Upgrade 헤더를 사용해 HTTP 프로토콜에서 웹소켓 프로토콜로 변경한다. 연결되면 WebSocket은 양방향 통신이 가능하다. URI 스킴(Scheme) : ws(WebSocket), wss(WebSocket Secure) ex) 채팅, 실시간 주식 차트 WebSocket 핸드셰이크 WebSocket으로 통신하려면 HTTP의 Upgrade 헤더를 사용해 프로토콜을 변경(Protocol Switching)하는 핸드셰이크를 실시한다. Client 요청 GET /chat HTTP/1.1 Host: server.example.com ..

HLS? 2009년 애플에서 개발한 HTTP 기반 적응 비트레이트 스트리밍 통신 프로토콜 일반 웹 서버에서 HTTP를 통해 오디오와 비디오를 전송하여 웹 브라우저, 모바일 기기, 여러 미디어 플레이어, 스트리밍 서버 등 다양한 기기에서 재생할 수 있다. 안전성을 위해 설계되었으며 네트워크 상황에 따라 동적으로 재생을 최적화한다. 동작 방식 미디어 원본 > 인코더 > 스트림 세그멘터 > 웹 서버 > 플레이어 미디어(오디오, 비디오)를 Media encoder로 인코딩한다. 인코딩된 파일은 MPEG-2 transport stream 컨테이너 혹은 fMP4 방식으로 처리되어 Stream segmenter로 전송된다. HLS는 처음에 MPEG-2 Transport Stream(TS) 컨테이너 사용을 지정했다. ..

로드 밸런서 서버나 장비의 부하를 분산(Load Balancing)하기 위해 사용하는 장비 ex) L4 스위치, ADC / AWS의 NLB, ALB / HAProxy 왜 로드 밸런서를 쓰는가? 로드 밸런서는 서버의 부하를 분산시키기 위해 사용한다. 그렇다면 왜 서버의 부하를 분산시켜야 할까? 서비스를 운영하는데 하나의 서버로도 무리 없이 운영할 수 있었다. 클라이언트로부터 요청이 들어오면 서버는 응답을 한다. 어느 날, 예상했던 요청보다 더 많은 요청이 들어왔다. 서버는 요청을 감당하지 못해 뻗어버리고 이는 곧 서비스 장애로 연결된다. 클라이언트는 원하는 리소스를 받지 못하게 되는 것이다. 그렇다면, 많은 요청이 들어와도 서버가 뻗지 않고 응답할 수 있는 방법은 없을까? 두 가지 해결책이 있다. 해당 서..
- Total
- Today
- Yesterday
- tcp커넥션
- github actions 구성요소
- opencsv
- 코프링
- jpa 쿼리 로그
- CGLIB프록시
- AOP
- spring boot3 쿼리 로그
- github actions components
- http커넥션
- mysql 온라인 ddl
- 문자집합변경
- csv 라이브러리
- file
- TCP연결
- read timeout
- utf8mb3
- mysql 이모지
- 엔티티와값객체
- 도메인구성요소
- 콜레이션
- hibernate 쿼리 로그
- spring retry
- csv to bean
- github actions 기초
- 콜레이션변경
- 이모지입력오류
- 쿼리 파라미터 바인딩
- online ddl
- 4Way Handshake
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |