전체 글 78

📌출처(Origin) 정의

📌출처(Origin) 정의 서버의 위치를 의미하는 https://google.com과 같은 URL은 하나의 문자열 같지만 다음과 같이 구성되어 있다. 이때 출처는 protocal과 Host 그리고 Port까지 모두 합친 것을 의미한다. 동일 출처 비교 예시 아래 표는 URL http://example.com/dir/page.html의 출처를 비교한 예시입니다. URL 결과 이유 http://example.com/dir2/other.html 성공 경로만 다름 http://example.com/dir/inner/another.html 성공 경로만 다름 https://example.com/secure.html 실패 프로토콜 다름 http://example.com:81/dir/etc.html 실패 포트 다름 (..

System/네트워크 2022.06.16

📌동시성과 병렬성

📌동시성과 병렬성이란? 동시성과 병렬성의 차이가 없는 것처럼 보일 수도 있지만, 이는 질문의 본질을 이해하지 못하기 때문입니다. 그들이 어떻게 다른지 이해하려고 노력합시다. 동시성(Concurrency) 동시성은 적어도 두 개의 스레드가 진행 중일 때 존재하는 조건이며, 가상 병렬 처리의 한 형태로 시간 분할(time-slicing)을 포함한다. 우리가 흔히 ‘동시’라고 이야기 하지만 컴퓨터(코어)는 한번에 하나의 명령어만 처리할 수 있다. 즉, 두개 이상의 알고리즘이 하나의 코어내에서 스레드간에 빠르게 교차되면서 실행되기 때문에 ‘동시’라고 느끼는 것이다. 위의 그림은 싱글 코어내에서 다중스레드들이 실행되는 동시성을 나타내고 있다. 참고로 Thread A와 Thread B가 교차되며 실행되는 부분을 C..

SERVER/Node.js 2022.06.11

📌HTTP 상태 코드

📌HTTP 상태 코드 에러가 발생한 경우에는 클라이언트에 에러가 났다고 알려줘야합니다. 그 때 보내는 게 상태 코드입니다. 이제부터 어떤 종류의 응답 코드가 있는지 알아보겠습니다. 1. 1XX 정보 100은 서버가 요청의 일부를 받았으며, 나머지 요청을 더 기다리고 있다는 것을 나타냅니다. 101은 http에서 https같이 프로토콜 전환이 일어났을 때 전환이 승인되었음을 알려줍니다. 보통 웹소켓을 할 때 101을 본 것 같습니다. 2. 2XX 성공 200은 성공을 의미하거든요. 대부분은 200이고 몇 가지 다른 게 있습니다. 201은 새로운 컨텐츠 만들기에 성공했을 때 사용합니다. 새로운 포스트를 썼다든가, 새로운 댓글을 썼을 때 보내주면 됩니다. POST 메소드에 대한 응답으로 잘 어울립니다. 204..

System/네트워크 2022.06.11

📌Observer Pattern이란?

Observer Pattern이란? 디자인 패턴이라는 건 소프트웨어 개발을 하면서 발생하는 다양한 이슈들을 해결하는데 도움을 주는 기술들입니다. 많은 개발자들의 경험들을 바탕으로 만들어진 증명된 기술들이죠. 개발에 난항을 겪는 사람들에게는 참조할 수 있는 솔루션이 됩니다. 오늘은 Observer 패턴을 살펴보도록 하겠습니다. Observer Pattern 정의 옵저버 패턴은 감시자들이 한곳을 계속해서 바라보고있고, 이벤트가 발생했을때 이벤트를 바라보고 있는 감시자들이 바로 반응할 수 있는 패턴입니다. 만약 이러한 옵저버 패턴을 가지지 않는다면 이 이벤트를 체크해야 하는 오브젝트들은 1시간, 1분, 1초마다 계속해서 확인해야해서 필요없는 리소스가 발생하기도 하고, 1시간만다 체크하게될 경우 1시간 내에 이..

SERVER/Node.js 2022.05.11

SOA, MSA 아키텍처란?

SOA, MSA 아키텍처란? 📌SOA SOA(Service Oriented Architecture)는 1990년대에 정의되어, 2008년에 유행했던 아키텍처 스타일이다. 현대의 서버 아키텍처는 SOA 사상에 많은 영향을 받았고 많은 분산 아키텍처가 거의 이 SOA 사상에 기인한다고 해도 될 만큼 중요한 아키텍처이다. SOA의 기본 개념 SOA란 기존 애플리케이션들의 기능을 비즈니스적인 의미가 있는 기능 단위로 묶고, 표준화된 호출 인터페이스를 통해 서비스라는 소프트웨어 컴포넌트 단위로 재조합한 후, 이 서비스들을 서로 조합(Orchestration)하여 업무 기능을 구현한 애플리케이션을 만들어내는 소프트웨어 아키텍처이다. 기존의 시스템이 각각 독립된 업무 시스템으로 개발되어왔던 반면에 SOA는 기업의 전..

SERVER/Node.js 2022.05.10

📌쿠키, 세션, 웹 스토리지

쿠키, 세션, 웹 스토리지 클라이언트의 로그인 정보나 브라우저에서 입력한 값 등이 페이지를 이동할 때 마다 초기화 되는 것입니다. 이러한 문제점을 해결하기 위해 데이터 저장에 사용하는 것이 쿠키, 세션 그리고 웹 스토리지입니다. 쿠키 Cookie 쿠키는 위의 그림과 같은 흐름으로 이용된다. 쿠키를 사용하는 이유는 HTTP 요청은 상태를 가지고 있지 않기 때문이다.(Stateless) 이 말은 브라우저에서는 서버에 요청을 보낼 때 그 요청 자체로는 그 요청이 누구에게서 오는지 알 수 없고, 쿠키에 정보를 담아서 보내면 서버는 쿠키를 통해 파악할 수 있게된다. 쿠키는 주로 세션 관리를 통해 로그인, 접속시간 장바구니 등에 활용되기도 하고, 쿠키를 통해 사용자별로 다른 정보를 표시하는 등 개인화가 가능하며, ..

System/네트워크 2022.04.27

💻 SOP, CORS 이란?

💻 SOP, CORS 이란? 📌 SOP(Single Origin Policy) - 동일 출처 정책 CORS가 왜 생겨났는지 알아보도록 하겠습니다. SOP: 동일 출처 정책(same-origin policy)은 어떤 출처에서 불러온 문서나 스크립트가 다른 출처에서 가져온 리소스와 상호작용하는 것을 제한하는 중요한 보안 방식입니다. 동일 출처 정책은 잠재적으로 해로울 수 있는 문서를 분리함으로써 공격받을 수 있는 경로를 줄여줍니다. 브라우저는 기본적으로 오리진이 다를 경우, 스크립트의 실행을 제한합니다. 쉽게 말해서, 실수로 잘못 들어간 사이트에서 멋대로 코드를 실행하여 쿠키 같은 개인정보나, 다른 사이트의 DOM 조작을 하지 못하도록 막을 수 있는 것입니다. 이런 안전장치가 없을 때 일어날 수 있는 여러 ..

System/네트워크 2022.04.25

💻 웹 서비스 성능 올리기(처리량, 응답시간)

웹 서비스 성능 올리기(처리량, 응답시간) 서버 성능 기본 짚 2개: 응답 시간, 처리량 TPS(Transaction Per Second): 초당 몇개 클라이언트 요청을 처리하는지를 나타냅니다. 📌 TPS를 높이려면 가장 쉬운 방법 : 서버 늘리기 단순하게 서버 1대가 10TPS면 2대면 20TPS가 됩니다. 비슷한 방법으로 쓰레드 풀+DB 커넥션 풀 늘리기 동시 처리할 수 있는 개수 쓰레드 풀 5, 처리 시간 1초 => TPS 5 쓰레드 풀 10, 처리 시간 1초 => TPS 10 📌 처리 시간을 줄이려면 처리 시간에서 비중이 높은 대상을 찾아 줄여햐 함 비중이 높은 대상 DB 연동 API 호출 데이터 집계/계산 1.DB 처리 시간 줄이기 보통 세 가지 방법 : 퀴리 튜닝, 캐시 서버 이용, 하드웨어 ..

SERVER/Node.js 2022.04.24

🖋서버 확장을 위한 두가지 방법

서버 확장을 위한 두 가지 방법 서버를 운영하다 보면, 갑작스러운 이용자의 증가, 사업 확장 등의 이유로 더 많은 서버 용량과 성능이 필요하게 됩니다. 이럴 때에는 '스케일 아웃'과 스케일 업' 두 가지 방법으로 시스템을 확장시킬 수 있습니다. Scale-out 스케일 아웃이란 서버를 여러대 추가하여 시스템을 확장하는 방법입니다. 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 로드밸런싱이 필수적으로 동반되어야 합니다. 스케일 아웃의 경우, 서버 한대가 장애로 다운되더라도 다른 서버로 서비스 제공이 가능하기 때문에 전면 장애의 가능성이 적습니다. 수평적 확장이며 지속적 확장이 가능합니다. 비교적 저렴한 서버를 사용하므로 일반적으로 비용 부담이 적습니다. 반면 모든 서버가 동일한 데..

SERVER/Node.js 2022.04.24

💻 WebRTC란

WebRTC 프로토콜 소개 1. WebRTC란 WebRTC(Web Real-Time Communication)는 웹 브라우저 간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API이다. W3C에서 제시된 초안이며, 음성 통화, 영상 통화, P2P 파일 공유 등으로 활용될 수 있다. 공개 웹 표준으로 구현되며 모든 주요 브라우저에서 일반 JavaScript API로 제공한다. (Apple, Google, Microsoft 및 Mozilla가 지원) 2. WebRTC의 프로토콜 소개 처음에 peer 간의 서로의 위치를 알지 못하기 때문에 서버를 사용해야하고 그 서버는 peer의 위치를 각 peer들에게 위치 정보를 알려주는 역할을 한다. 2-1. ICE(Interactive Connectivity ..

SERVER/Node.js 2022.04.17