본문 바로가기

분류 전체보기

(153)
Network - OSI 7 계층 (OSI 7 Layers) OSI 7 계층 OSI 7 계층은 국제표준화기구 (ISO) 에서 개발한 모델로, 네트워크 프로토콜 디자인과 통신을 계층으로 나눠 설명한 것이다. 쉽게 말하여, 국제표준화기구에서 만든 네트워크 통신의 7단계 과정을 말하는 것이다. Layer 7 응용 계층 (Application Layer) Layer 6 표현 계층 (Presentation Layer) Layer 5 세션 계층 (Session Layer) Layer 4 전송 계층 (Transport Layer) Layer 3 네트워크 계층 (Network Layer) Layer 2 데이터 링크 계층 (Data Link Layer) Layer 1 물리 계층 (Physical Layer) Layer 5 - Layer 7을 Upper Layer라고 하고, Lay..
테스트 주도 개발 방법론 (TDD, Test-Driven Development) 테스트 주도 개발 방법론은 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는 지 검증하기 위한 테스트 코드를 작성하고, 이를 통해 실패할 경우, 테스트를 통과하기 위한 최소한으로 코드를 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링하는 과정을 거치고 나서야 실제 코드로써 동작된다. 단위 테스트 단위테스트를 작성해야 하는 이유는 정말 많다. 그 중 몇 가지 핵심적인 이유들은: 1. 코드를 수정하거나 기능을 추가할 때 수시로 빠르게 검증할 수 있다. 2. 리팩토링 시에 안정성을 확보할 수 있다. 3. 개발 및 테스팅에 대한 시간과 비용을 절감할 수 있다. 단위 테스트를 작성하지 않은 코드들은 테스트를 작성하지 않은 코드들보다 버그가 있을 확률이 높은데, 문제는 통합 테스트 (수..
System Architecture - 로드 밸런싱 (Load Balancing) 로드 밸런싱 (Load Balancing) 이란 서버에 가해지는 부하 (Load) 를 분산 (Balancing) 해주는 장치, 또는 기술을 의미한다. 클라이언트와 서버 풀 (Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리하여 각각의 서버가 최적의 퍼포먼스로 트래픽을 처리할 수 있도록 하는 것이 로드 밸런싱이다. 계기 서비스의 초기 단계에서는 클라이언트 수가 적기 때문에 서버 한 대로도 모든 요청에 응답하는 것이 가능할 것이나, 사업 규모의 확장, 클라이언트의 증가가 이루어지면 기존의 서버로는 유지가 불가능하게 된다. 이 경우, 서버의 증설이 필요한데, 첫 번째로 scale-up이 있다. scale-up은 서버의 자체의..
System Architecture - 기본과 용어들 Client 말 그대로 해당 서비스를 사용하는 클라이언트이다. DNS DNS는 Domain Name Server의 약자이다. 다음 글을 참고. https://lgphone.tistory.com/152 Web - DNS (Domain Name Server) DNS (Domain Name Server) 는 도메인을 저장하는 서버로써, www.example.com 과 같이 사람이 읽을 수 있는 도메인 이름을 192.0.2.1 과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 해준다. DNS lgphone.tistory.com CDN CDN은 Content Delivery Network 또는 Content Distribution Network의 약자이다. 다음 글을 참고. https://lgp..
Web - CDN (Content Delivery/Distribution Network) CDN이란? CDN (Content Delivery/Distribution Network) 은 지리적 제약 없이 전 세계에 있는 사용자들에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술이다. CDN은 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화한다. CDN은 각 지역에 캐시 서버 (PoP, Points of Presence) 를 분산 배치하여 근접한 사용자의 요청에 원본 서버가 아닌 캐시 서버가 콘텐츠를 전달하게 되어 그 전달 시간을 줄인다. 예를 들어, 미국에 있는 사용자가 한국에 호스팅 된 웹사이트에 접근하는 경우, 미국에 위치한 PoP 서버로부터 웹사이트 콘텐츠를 받게 될 것이다. CDN은 PoP 서버에 콘텐츠를 저장하는 방식과 아키텍처에 따라서 P..
Web - DNS (Domain Name Server) DNS (Domain Name Server) 는 도메인을 저장하는 서버로써, www.example.com 과 같이 사람이 읽을 수 있는 도메인 이름을 192.0.2.1 과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 해준다. DNS 서버는 이름을 IP 주소로 변환하여 도메인 이름을 웹 브라우저에 입력했을 때, 최종적으로 사용자를 어떤 서버에 연결시켜 줄 것인지를 제어한다. 그리고 이 요청을 쿼리 (Query) 라고 한다. 순서 1. 사용자가 웹 브라우저를 열어 주소(www.example.com)를 입력하고 Enter을 누른다. 2. 이 주소에 대한 요청은 일반적으로 인터넷 서비스 제공업체 (ISP, Internet Service Provider) 에서 관리하는 DNS 해석기로 라우팅된..
Node.js - 자식 프로세스 돌리기 (Run child_process) 최근 Node 환경에서 Julia의 REPL을 돌려야하는 케이스가 생겨서 이를 실현 시키기 위해서 child_process 모듈을 사용해봤다. 구현 const spawn = require('child_process').spawn; function spawnTest() { return new Promise(function(resolve, reject) { let process = spawn('python'); const command1 = 'num1 = 1 \n'; const command2 = 'num2 = 2 \n'; const command3 = 'print(num1 + num2) \n'; process.stdout.on('data', data => { console.log(data.toString(..
Julia - Julia에서 특별한 점들 Julia라는 언어를 배우면서 Julia에 있어서 다른 언어와 다른, 특별한 점이 있다면 여기에 적어놓으려고 한다. 스트링 합체 다른 언어에서는 "+"를 통해서 두 스트링을 합치지만, Juliad에서는 "*"를 통해서 두 스트링을 합친다. julia> a = "hello" "hello" julia> b = "world" "world" julia> a * b "helloworld" 따라서 어떠한 스트링을 반복하고 싶을 때에는, 그 스트링을 거듭제곱하는 것이라고 생각하면 되기 때문에, 다음과 같이 작성하여 반복된 스트링을 얻을 수 있다. julia> "hi" ^ 5 "hihihihihi" 어레이의 정의 (또는 벡터) Julia에서는 기본적으로 어레이 또는 벡터에 어떤 자료형의 값이 들어가는 지가 정의되어 있..