728x90

컴퓨터 공학 & 통신 74

서버에 도메인을 연결하는 방법(2) (feat. AWS Route53)

서버에 도메인을 연결하는 방법(1)에서 도메인을 구매했다면,도메인이 어떻게 서버에 연결되는지 살펴보자. 레코드 유형나는 AWS Route53을 통해 도메인을 구매하고, 레코드를 생성했으므로,Route53을 예시로 들어 설명하겠다. 도메인을 구매하고 나면구매한 도메인 이름으로 호스팅 영역이 생성되고,해당 호스팅 영역으로 들어가면아래와 같이 NS, SOA 유형의 레코드가 생성되어 있다.NS (Name Server Record)NS 레코드 유형은 도메인을 관리하는 네임서버의 주소를 지정하는 것이다.값/트래픽 라우팅 대상에는 'ns-123.awsdns-45.net' 등의 값이 들어간다.Route 53은 도메인을 위해 전 세계에 분산된 수천 개의 네임서버 인프라를 운영 중이고,그 중에 내 도메인에 대해 담당 역할..

서버에 도메인을 부여하는 방법 (1)

도메인의 필요성사이드 프로젝트를 진행하며 앱 출시를 앞두게 되었다.처음 앱 출시 당시에는 사용자가 많지 않을 것으로 예상해 서버는 ec2 인스턴스 1대로 운영하기로 했다.테스트 과정에서는 aws에서 자동 생성해주는 ec2 도메인을 사용하여 통신했다. 그런데 앱 출시 후 트래픽이 늘어나면 인스턴스를 바꾸거나 늘리는 등의 스케일 조정이 필요할 것이고,그렇게 되면 ec2 자동 생성 도메인이 교체되어 이미 출시된 앱과의 통신이 어려워 진다. 추후 서버 스케일링을 위해 로드 밸런서 사용하기도메인 구매하기두 가지 방안을 고민했는데, 당장은 도메인을 구매하는 것이 더 비용적으로 저렴하고로드 밸런서를 사용하더라도 aws 자동 생성 도메인을 사용하면로드 밸런서를 교체할 때 인스턴스 교체와 마찬가지로 곤란하게 되므로도메인..

Http 통신 응답 압축 (feat. gzip, NestJS)

Http 통신에서 압축이란?Http 통신에서 압축(compression)이란 성능을 향상 시키는 주요한 방법 중 하나다.요청과 응답 body를 압축함으로써 최대 70%까지 대역폭 사용량을 감소시킬 수 있고,속도를 향상 시킬 수 있다. 다만, 압축과 해제를 위해서는 CPU가 조금 더 사용되기 때문에,[트래픽 크기와 속도 vs CPU 사용량]의 trade off 관계이다.압축이 CPU를 많이 사용하는 것은 아니지만,압축 효율이 그다지 좋지 않은 경우에는 압축하지 않는 것이 나을 수 있다. 또, 이미 압축된 이미지, 오디오, 비디오 파일을 한 번 더 압축하는 것은효용보다 비용이 더 크므로두 번 압축하지 않도록 주의해야 한다. 실질적으로, 브라우저와 서버가 압축 기능을 지원하기 때문에개발자가 직접 압축 알고리즘..

서버 네트워크 구성 요소와 흐름 (feat. AWS)

사용자 요청이 서버에 도달하고, 처리된 후 응답이 돌아오는 과정에는 다양한 네트워크 구성 요소들이 유기적으로 작동한다.서버 네트워크 구성 요소를 중심으로 요청의 흐름을 단계별로 살펴보고, 주요 구성 요소들에 대해 알아보자. 1. 클라이언트에서 요청 보내기 모든 과정은 사용자의 브라우저나 애플리케이션에서 시작된다.사용자가 웹사이트에 접속하거나 API 요청을 보낼 때, 해당 요청은 인터넷을 통해 서버 네트워크로 전달된다. 2. 로드 밸런서 (Load Balancer) 로드 밸런서는 들어오는 트래픽을 여러 서버 인스턴스에 효율적으로 분산시켜준다.이를 통해 서버 과부하를 방지하고, 고가용성을 유지할 수 있다. 대상 그룹 (Target Group) 로드 밸런서는 대상 그룹을 통해 요청을 처리할 서버 인스턴스를 정..

[키워드 정리/운영체제] 펌웨어 VS 운영체제

펌웨어와 운영체제의 차이는 무엇일까? 둘은 아래와 같은 차이가 있다. 일반적으로 펌웨어는 ROM이라 불리는 비휘발성 메모리 하나를 사용한다. 반면, 운영체제는 휘발성, 비휘발성 메모리를 계층화하여 사용한다. 펌웨어는 자유롭게 프로그램을 설치할 수 없고, 미리 설치된 프로그램을 기반으로 업데이트가 일어난다. ROM에 해당 소프트웨어를 지우고 덮어쓰는 방식으로 업데이트가 일어난다. 운영체제는 장기적으로 업데이트가 되면서 운영체제 위에 프로그램을 자유롭게 설치하는 것이 가능한다. 펌웨어의 예로는 키보드, 세탁기 안의 소프트웨어 등이 있다. 운영체제의 예는 MacOS, WindowOS 등이 있다. 참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

[개념 정리/운영체제] 메모리 할당

메모리 할당 프로그램에 필요한 메모리를 할당할 때 시작 메모리 위치, 메모리 할당 크기를 기반으로 할당한다. 메모리 할당 방식은 연속 할당과 불연속 할당으로 나뉜다. 연속 할당 연속 할당(continuous memory allocation)은 메모리에 연속적으로 공간을 할당하는 것이다. 사용 가능한 모든 메모리 공간이 같은 위치에 함께 있다. 메모리 파티션이 전체 메모리 공간에 이리저리 분산되어 있지 않는다. 연속 할당에는 고정 분할 방식과 가변 분할 방식이 있다. 고정 분할 방식 고정 분할 방식(fixed partition allocation)은 메모리를 미리 같은 크기로 분할하여 할당하는 방식이다. 고정 분할 방식은 내부 단편화(internal fragmentation)을 발생시킨다. 내부 단편화란 ..

[개념 정리/운영체제] 캐시

캐시 캐시란 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. 이를 통해 데이터 접근 시간의 단축, 데이터를 다시 계산하는 시간 등을 절약할 수 있다. 캐시의 예는 CPU 레지스터가 대표적이다. CPU가 메모리로부터 데이터를 가져올 때의 시간이 길어, 그 중간에 레지스터 계층을 둬 속도차이를 해결하는 것이다. 캐시 히트란 캐시에서 원하는 데이터를 찾은 것을 말하며, 캐시 미스란 캐시에서 원하는 데이터를 찾지 못한 것을 말한다. 위 그림과 같은 경우, 캐시미스가 일어나면 메모리로 가 원하는 데이터를 레지스터에 등록하게 된다. 캐시는 우리가 사용하는 서비스 내부에서도 많이 찾아볼 수 있다. 예를 들어, 데이터베이스에서 redis..

[개념 정리/운영체제] CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘 CPU가 어떤 프로세스를 선택할 것인지는 스케줄링 알고리즘을 통해 선택되며, 효율적으로 선택하는 것이 중요하다. 효율적이란, 아래 세 가지 사항을 만족시키는 것을 말한다. CPU 사용률이 높은가? 단위 시간당 작업을 마친 프로세스의 수(처리량)이 높은가? 작업을 요청한 프로세스가 작업을 시작하기 전 대기하는 시간이 짧은가? CPU 스케줄링 방식은 비선점형과 선점형으로 나뉜다. 비선점형 방식(non-preemptive) 비선점형 방식에는 FCFS, SJF, 우선순위 방식 세 가지가 있다. 비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지시키지 않는다. 따라서 컨텍스트 스위칭으로 인한 부하가 적다. FCFS(First Come, First ..

[개념 정리/운영체제] 교착 상태(deadlock)

교착 상태 (deadlock) 교착 상태(deadlock)은 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다. 이 과정에서 각 프로세스는 서로가 원하는 자원을 유지한 채 다른 프로세스의 자원을 얻고자 기다리는 것이다. 원인 교착 상태가 발생하기 위한 필요조건은 4가지가 있다. 상호 배제: 주어진 시간 내에 하나의 프로세스만 자원을 독점할 수 있다. 즉, 다른 프로세스들은 접근이 불가능하다. 점유 대기: 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하며 대기하는 상태이다. 비선점: 다른 프로세스의 자원을 강제적으로 가져올 수 없다. 환형 대기: 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황..

[개념 정리/운영체제] 경쟁 상태 해결 방법 - 뮤텍스, 세마포어, 모니터

경쟁 상태 해결 방법 공유 자원에 대한 경쟁 상태를 해결하는 방법에는 대표적으로 뮤텍스, 세마포어, 모니터 3가지가 있다. 이들은 상호 배제, 한정 대기, 진행의 융통성 조건을 만족시키며 경쟁 상태를 해결한다. 아래 설명은 프로세스, 스레드 모두 적용되는 내용이다. 상호 배제(mutual exclusion): 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없다. 한정 대기(bounded waiting): 특정 프로세스가 임계 영역 진입을 요청한 후 해당 요청이 승인되기 전까지 다른 프로세스가 임계 영역에 진입하는 횟수를 제한하는 것을 말한다. 이를 통해 특정 프로세스가 영원히 임계 영역에 들어가지 못하는 것을 방지한다. 진행의 융통성(progress): 어떠한 프로세스도 임계 영역을 ..

728x90