개발
-
브라우저에 google.com을 입력하면 어떤 일이 일어날까? - 2개발/기타 2025. 4. 21. 00:04
아래 내용 중 1~3번에 대해 간략하게 요약해 작성하고 4, 5번에 대해 자세히 작성하겠다.1~3번의 자세한 내용은 이전글에 작성했다. 0. 사용자가 google.com을 입력1. 캐시 검사 : 해당 도메인에 대한 IP가 캐시에 있는지 검사한다. 2. DNS 조회 : 만약 캐시가 되어있지 않다면 DNS를 조회해 IP값을 조회한다. 3. TCP (및 TLS) 연결 설정 : DNS를 통해 얻은 IP 주소로 TCP(+TLS) 연결을 시도한다. 4. HTTP 요청 및 응답5. 브라우저의 페이지 렌더링 3번에서 TCP 연결이 완료되면, 이제 해당 IP를 통해 실제 요청을 보낼 차례이다. 실행 흐름대로 작성해야 해서 4번과 5번에 대해 함께 작성하고 이후 추가 설명을 덧붙이도록 하겠다. 4. HTTP 요청 및..
-
브라우저에 google.com을 입력하면 어떤 일이 일어날까?개발/기타 2025. 4. 14. 00:30
도메인과 연결된 IP를 바꾼다거나, xxx.co.kr 도메인으로 접속했을 때 xxx.com 도메인으로 변경이 필요했던 적이 있다.AWS로 구성된 인프라 환경이었기에 Route53에 있는 레코드 값을 변경해주면 됬지만, 각각의 레코드가 어떤 의미인지 모르고 있었기에 이번에 한번 정리해보고자 한다.추가적으로 DNS에 대해 공부하며 브라우저에 google.com을 입력하면 어떤 일이 일어나는지에 대해서도 작성해보겠다. 아래와 같은 순서로 작성할 예정이다.1. DNS?2. 브라우저에 "google.com"을 입력하면 어떤 일이 일어날까? 1) 캐시 검사 2) DNS 조회 3) TCP (및 TLS) 연결 설정 4) HTTP 요청 및 응답 ..
-
스택이 매우 커질 수 있다면 힙은 불필요할까?개발/기타 2025. 4. 6. 22:24
https://www.youtube.com/watch?v=9TSojdIr8Q0이 영상을 보고 "나라면 어떻게 답변했을까?" + 부족했던 점을 작성하고자 한다. 알고 있는 지식, ChatGPT와 더불어 이것 저것 찾아보겠지만 잘못된 내용이 있을 수 있습니다.잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)나라면 어떻게 답변했을까? (잘못된 내용이 있습니다.)메모리 할당 영역은 Data, Stack, Heap 영역 이렇게 3가지가 있는 것으로 알고 있다. Data영역- 전역변수, static 변수 등이 존재Stack 영역- 고정 크기, 지역변수, 매개변수, 함수 리턴 주소가 존재Heap 영역- 동적 크기, 동적 할당 변수 존재 이정도로 배경지식이 있는 상태이다.그렇다면, 스택이 매우 커질 수 있다면..
-
Spring Batch와 Scheduler개발/Spring(boot) 2025. 3. 30. 23:26
Spring Batch와 Scheduler의 차이점이 궁금해져서 관련 내용에 대해 작성해보겠다. 결론부터 말하자면 Spring Batch는 실제 데이터 처리 로직과 비즈니스 처리를, Scheduler는 작업들을 정해진 시점에 실행하도록 관리한다.Spring Batch는 스케줄러를 대체하기보다는 스케줄러와 함께 작동하도록 설계돼있다. (Spring Batch is intended to work in conjunction with a scheduler rather than replace a scheduler.) 아래와 같은 순서로 작성할 예정이다.1. Spring Batch 1-1. Spring Batch의 핵심 구성 요소 1-2. 배치 처리 전략 1-3. 배치 시스템의 처리 전략2. Sched..
-
SpringBoot에서 여러 요청을 동시에 처리하는 방법개발/Spring(boot) 2025. 3. 23. 23:26
Thread Pool에 대해 찾아보던 도중 좋은 강의가 있어 강의 내용에 대해 내가 이해한 방식대로 작성해 보고자 한다.참고한 강의는 우아한테크코스의 강의로 아래 링크에서 확인할 수 있다.https://www.youtube.com/watch?v=um4rYmQIeRESpring Boot 애플리케이션은 기본적으로 내장 서블릿 컨테이너(Tomcat, Jetty ..)를 사용하며,이 서버들은 내부적으로 Thread Pool을 활용하여 요청을 처리한다.따라서 Thread Pool 관련 설정값을 잘 조정해야 어플리케이션을 원할하게 운영할 수 있다. 이번 글에서는 아래 내용에 대해 작성해보고자 한다.1. Program, Process, Thread?2, Thread Pool?3. Java의 Thread Pool4. ..
-
CoroutineScope을 정의하는 방법개발/Spring(boot) 2025. 3. 10. 00:45
suspend fun coroutineScope(block: suspend CoroutineScope.() -> R): R이전 글에서 CoroutineScope를 선언하고 Flow와 함께 사용해 SSE를 구현했었고,잘 모르는 상태로 아래와 같이 CoroutineScope코드를 정의했었다.private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())그럼 이번 글에서는 CoroutineScope에 대해 작성해보고자 한다.참고로 Docs를 보고 알아볼 예정이지만 백엔드 개발자이기에 안드로이드 관련 내용은 작성하지 않을 예정이다.아래와 같은 순서로 작성하겠다.1. CoroutineScope?1-1. 구조적 동시성(structured concurren..
-
쿠버네티스란?개발/기타 2025. 2. 23. 23:08
"k8s라고도 알려진 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템" Docs에 작성돼 있다. 이 설명만 봐도 용어가 너무 많으므로 1. 용어에 대한 의미(컨테이너와 애플리케이션, 배포 및 스케일링)와2. 쿠버네티스에 대한 내용3. 쿠버네티스에서 사용하는 용어순서로 각각의 용어들과 함께 쿠버네티스에 대해 간단히 작성해보고자 한다.1. 용어에 대한 의미1) 컨테이너와 애플리케이션 컨테이너는애플리케이션과 그 실행에 필요한 모든 요소(코드, 라이브러리, 설정 등)를 하나의 패키지로 묶어 격리된 환경에서 실행할 수 있도록 해주는 기술이다. 여기서 애플리케이션은 내가 주로 사용하는 스프링부트로 예시를 들 수 있다.그리고 애플리케이션을 컨테이너로 만들어주는 도구로는..
-
SSE를 활용해 작업 진행률 전달하기개발/Spring(boot) 2025. 2. 16. 23:59
서버에서 특정 작업이 오래 걸릴 수 있고, 이 경우 클라이언트에게 진행률을 알려주는것이 UX 관점에서 좋다고 생각한다.그럼 서버가 클라이언트에게 작업 진행률을 어떻게 전달할 수 있는지에 대해 작성해보겠다. 그래서 이번 글에서는 Springboot의 WebFlux를 활용해 이를 전달하는 방법에 대해0. WebFlux 선택 이유1. 초기 환경 세팅2. SSE 코드 작성3. SSE와 WebSocket 통신의 차이4. 내가 작성한 SSE의 한계점순서로 작성해보고자 한다.0. WebFlux 선택 이유SSE를 사용하는 방법은 크게 두가지가 있다.1) ResponseBodyEmitter를 사용하는 방법 (Spring MVC 기반)2) WebFlux의 Flux를 사용하는 방법 (Reactive Streams 기반) 그..