목록PROGRAMMING::CORE (10)
Love Every Moment
1. 로드 밸런싱(Load Balancing) 부하 분산이란 처리해야 하는 업무나 요청 등을 나누어 처리하는 것을 의미 컴퓨터 공학에서의 부하 분산은 여러 중앙처리장치 또는 저장장치와 같은 컴퓨터 자원들에게 자원을 나누는 것을 의미 서버 부하 분산은 외부 사용자로부터 들어오는 다수의 요청을 서버들에게 적절히 분배하여 요청을 처리하게 한다 서버 부하 분산 작업을 수행하는 환경이 로컬 컴퓨터이면 L4/L7 Switch(Layer 4), 클라우드이면 Load Balancer 2. 서버 부하 분산 방법 (1) Round Robin 다수의 서버에게 순서대로 요청을 할당하는 가장 단순한 방법 (2) Least Connection 가장 connection 이 적은, 즉 부하가 가장 적은 서버에게 요청을 할당 (3) ..
0. 배경 이번에 새로운 자바 프로젝트를 시작하면서, 체계적으로 설계를 완료한 다음에 개발 단계에 들어서보고자 클래스 다이어그램 작성 방법을 찾아서 참고할만한 글들을 모아보았다. 지금까지는 노션에 대략적으로 구상한 프로그램 동작 방식을 적어두고 직접 수도코드를 적어가면서 개발을 했는데, 클래스 다이어그램을 한 번 사용해보니 클래스 이름, 속성명과 타입, 메소드 등을 구체적으로 적어둘 수 있을 뿐만 아니라 클래스 간의 관계를 표현 가능해서 정말 편했다. 클래스 다이어그램은 UML 다이어그램 중에서 정적 다이어그램에 속하는 것으로, 시스템을 구성하는 클래스들 간의 관계를 표현하는 다이어그램이다. 아래 draw.io 사이트에서 편리하게 클래스 다이어그램을 만드는 기능을 제공하고 있다. Flowchart Mak..
1. PATH PATH 는 리눅스 환경변수의 일종으로 실행 파일의 경로이다. printenv 명령어를 통해 환경변수 목록을 확인할 수 있다. 환경변수 PATH 가 어떻게 설정되어 있는지 확인하는 명령어는 echo $PATH 이다. 각각의 경로는 : 로 구분되며 총 다섯 개의 경로가 있는 것을 확인할 수 있다. 명령 탐색 경로는 왼쪽에서부터 우선 순위를 가진다. $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 2. 차이 (1) usr/local/bin 스스로 설치한 명령어를 사용할 수 있도록 하는 장소이다. 보통 게임이나 잡다한 유틸들이 들어있다. 리눅스 저장소에 있는것 이외의 것을 설치할 때나 자작 명령어를 보관해야 할 때 유용하다. /usr/bin..
1. 프로세스(Process) (1) 프로세스란? 현재 실행 중인 프로그램 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당 받아 실행중인 것 운영체제의 제어 아래 실행(Running), 대기(Waiting), 중단(Stopped), 좀비(Zombie) 중 하나의 상태에 있게 된다. 각각의 프로세스가 가지는 고유의 번호를 PID(Process Idendification Number)라고 한다. 예를 들어 데비안 리눅스가 부팅될 때에는 최상위 프로세스인 systemd(PID: 1)이 생성되며 모든 프로세스들은 이 1번 프로세스의 자식 프로세스가 된다. 부모 프로세스의 PID 를 줄여서 PPID 라고 한다. ps 명령어를 통해 현재 실행중인 프로세스 목록을 확인할 수 있다. (2) 쓰레드(..
0. 개요 유닉스 이전의 운영 체제에서는 프로그래머가 직접 입·출력장치를 설정하고 연결했어야 했다. 하지만 유닉스에서는 데이터 스트림(Data Stream) 이라는 개념을 이용하여 장치를 추상화함으로써 open, read, write 하면 자동으로 입·출력 장치가 연결되도록 하였다. 스트림(Stream)은 컴퓨터에 연결되는 여러 장치들을 통일된 방식으로 다루기 위한 가상적인 개념이다. 이를 통해 프로그래머는 데이터가 어디서 나와 어디로 가는지 신경쓰지 않고 자유롭게 이용할 수 있다. 표준 스트림(Standard Stream) 은 프로세스가 생성되면 기본적으로 생기는 입·출력을 위한 채널이다. 여기에는 표준 입력(Stdin), 표준 출력(Stdout), 표준 에러(Stderr) 가 있으며 터미널을 열면 쉘..
1. 서브넷(Subnet) (1) 서브넷팅(Subnetting) 네트워크 관리자가 네트워크 성능을 향상시키기 위해 자원을 효율적으로 분배하는 것 서브넷 마스크를 이용하면 하나의 네트워크를 여러 개의 서브넷 네트워크로 분할 가능하다 (2) 기본 서브넷마스크 네트워크 ID 부분의 비트를 1로 치환한 것 IP 주소와 넷마스크를 AND 연산하면 네트워크 주소를 얻을 수 있다. A 클래스: 255.0.0.0 B 클래스: 255.255.0.0 C 클래스: 255.255.255.0 ★ 서브넷팅 예시 IP주소가 192.168.0.1 이라면 C 클래스라는 것을 알 수 있다. 해당 IP주소를 2진수로 표현하면 11000000.10101000.00000000.00000001 이다. 넷마스크는 앞에서부터 세번째 블록까지의 비..
0. 네트워크(Network) 두 대 이상의 컴퓨터가 물리적으로 또는 논리적으로 연결되어 통신 가능한 상태 규모에 따른 네트워크의 종류 (1) PAN(Personal Area Network) 가장 작은 규모의 네트워크 (2) LAN(Local Area Network) 근거리 영역 네트워크 또는 근거리 통신망 집, 학교, 또는 회사처럼 좁은 범위 내에서 고속 통신이 가능한 통신망 여러 기기가 하나의 네트워크(=와이파이 라우터)에 연결되어 있는 것 (3) MAN(Metropolitan Area Network) 대도시 영역 네트워크 (4) WAN(Wide Area Network) 광대역 통신망으로 LAN 보다 넓은 지역을 하나로 묶는 네트워크 지역과 지역, 지방과 지방, 국가와 국가, 또는 대륙과 대륙을 연결..
1. Makefile 이란? Make: 주어진 쉘 명령어들을 조건에 맞게 실행하는 프로그램 Makefile: 어떤 조건으로 명령어를 실행할지 담은 파일 Incremental build: 반복적인 빌드 과정에서 변경된 소스코드에 의존성(Dependency)이 있는 대상들만 다시 빌드 예: main.c의 한 줄만 바꾸고 다시 빌드한다면 main.o 컴파일(gcc -c -o main.o main.c)과 a.out링크(gcc -o a.out main.o foo.o bar.o)만 수행 2. 소스 코드에서 프로그램 빌드하기 (1) 컴파일(Compile) 소스 코드를 컴퓨터가 이해할 수 있는 어셈블리어로 변환하는 과정 -c 옵션: 링크를 하지 않고 컴파일해서 목적 파일(Object File)을 생성하라는 의미 -o ..