로드밸런싱(Load Balancing)이란?서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미한다.단일 서버에 과도한 부하가 걸리지 않도록 하여 시스템의 성능과 안정성을 향상시키는 것이 목적이다.Why?사용자가 적을 때는 서버가 클라이언트의 요청에 무리없이 응답할 수 있다. 그러나 사용자가 많아지면 서버는 모든 클라이언트의 요청에 응답하려고 애쓰지만 결국 과부하가 발생하게 된다. 이를 해결하기 위해 아래의 두 가지 서버 확장 방법으로 서버를 확장해야 한다.스케일업(Scale-Up) & 스케일아웃(Scale-Out)스케일 업(Scale-Up): 기존 서버 하드웨어의 성능을 향상시키는 방법(수직확장)스케일 아웃(Scale-Out): 트래픽이나 작업..
비선형 자료구조(NonLinear Data Structure) 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조로 일반적으로 트리나 그래프를 말한다. 그래프(Graph) 정점과 간선으로 이루어진 자료구조 정점과 간선 어떠한 곳에서 어떠한 곳으로 무언가를 통해 간다고 했을 때 '어떠한 곳'은 정점(Vertex) '무언가'는 간선(Edge)이 된다. 간선에는 단방향과 양방향이 존재한다. V로 부터 나가는 간선을 outdegree / v로 들어오는 간선을 indegree + 정점은 약자로 V 또는 U라고 한다. 가중치 정점고 정점 사이에 드는 비용 트리(Tree) 그래프 중 하나로 그래프의 특징처럼 정점과 간선으로 이루어져있고 트리구조로 배열된 일종의 계층적 데이터의 집합이다. 루트노드, 내부 노드, 리프..
영역별 네트워크 분류 LAN & MAN & WAN LAN(Local Area Network): 근거리 통신망을 의미한다. 같은 건물이나 캠퍼스 같은 같은 좁은 범위에서 연결된 네트워크이다. 이더넷, 와이파이와 같은 기술들 10km 거리 제한 초등학교 컴퓨터실에서 몰래 스타크래프트 하면서 LAN으로 친구들과 만나서 같이 게임 했던 기억이 난다. MAN(Metropolita Area Network) 도시권 통신망을 의미한다. 큰 도시와 같이 넓은 지역의 네트워크이다. DSL전화망, 케이블 TV네트워크를 통한 인터넷 서비스 제공 등 50km 거리 제한 WAN(Wide Area Network) 광역 통신망을 의미한다. 두 개 이상의 LAN들이 연결된 네트워크이다. 지역, 국가, 세상 범위까지 구성된 지리적 거리..
애플리케이션(Application) 시스템 소프트웨어(응용소프트웨어를 실행하기 위한 플랫폼 역할을 하는 소프트웨어)를 제외한 모든 소프트웨어 네이티브 애플리케이션(Native Application) 특정기기(스마트 폰, 태블릿 등등)에 설치하여 사용하는 애플리케이션으로 특정 실행환경에 종속된다.(아이폰 앱을 안드로이드 폰에서 사용할 수 없듯이) 장점 1. 웹 애플리케이션보다 빠르다. 2. 애플리케이션이 설치된 기기의 시스템/기기의 리소스에 접근이 용이하다.(GPS기능이나 카메라 등) 3. 인터넷이 없어도 사용 가능하다. 4. 웹 애플리케이션에 비해 안전하다.(모바일의 경우 앱스토어에 승인을 받아야 함) 단점 1. 웹 애플리케이션에 비해 개발 비용이 비싸다. (아이폰과 안드로이드 간의 멀티 플랫폼 개발 등..
origin과 upstream은 공통적으로 git에서 사용되는 원격저장소(Remote Repository)의 이름을 뜻한다. origin과 upstream은 두 저장소의 관계에 따라 정의되는 상대적인 개념이다. 절대적으로 어떤 저장소가 origin 이거나upstream이 아니다. origin origin은 보통 로컬저장소(Local Repository)와 연결된 원격저장소(Remote Repository)의 기본 이름이며 보통 프로젝트를 클론(clone)하거나 'git init'명령어를 통해 새로운 로컬 저장소를 생성하면 자동으로 origin이라는 이름의 원격저장소가 생성되고, 해당 원격 저장소의 URL이 기본으로 설정된다. origin은 주로 로컬저장소와 원격저장소 간에 코드를 푸시(push)하거나 풀..
TCP는 연결형 서비스로 3-way handshaking과정을 통해 연결을 설정하기 때문에 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있고 4-way handshaking과정을 통해 연결을 해제합니다. UDP는 비 연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있지만, 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다는 장점이 있습니다. TCP는 주로 신뢰성이 중요한 파일 교환과 같은 경우에 사용되고 UDP는 실시간성이 중요한 스트리밍에서 자주 사용됩니다. 프로토콜의 종류 TCP UDP 연결 방식 연결형 서비스 비연결형 서비스 패킷 교환 방식 가상 회선 방식 데이터그램 방식 전송 순서 전송 순서 보장 전송 순서가 변동될 수 있음 수신 여부 ..
스레드(Thread)란? 프로세스(Process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스는 한 개 이상의 스레드가 존재하여 작업을 수행하며 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(Multi-Threaded Process)라고 합니다. 프로세스(Process)란? 단순히 실행 중인 프로그램이라고 할 수 있습니다. 즉, 개발자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원과 스레드로 구성됩니다. 스레드의 생성과 실행 Java에서 스레드를 생성하는 방법에는 크게 두 가지 방법이 있습니다. Thread 클래스를 상속받는 방법 Runnable 인터페이스를 구현하는 ..
싱글톤 패턴(Singleton Pattern)이란? 전역 변수를 사용하지 않고 객체를 하나만 생성하여 생성된 객체를 어디서든 접근하여 참조할 수 있도록 하는 패턴입니다. 개발을 하다보면 전역적으로 하나의 객체만을 사용해야 하는 경우가 종종 발생합니다. 하지만 특별히 제한을 걸어두지 않으면 객체들이 여러 개로 복제되는 경우가 생길 수 있습니다. 싱글톤 패턴을 사용하면 객체 생성을 단 한 번으로 제한하여 객체들이 복제되는 경우를 방지할 수 있습니다. 또한, 클래스를 사용하는 여러 곳에서 인스턴스를 계속 생성하여 불필요하게 메모리를 낭비하는 것을 방지할 수 있습니다. 싱글톤 패턴의 장단점 장점 단점 1. 메모리 낭비를 방지할 수 있다. 2. 싱글톤으로 만들어진 클래스와 다른 클래스의 인스턴스들의 데이터 공유가..