no image
[Web] Scaling up(수직 확장)과 Scaling out(수평 확장) 알아보기
Scaling up(수직 확장) 더 많은 요청을 처리하기 위해 단일 서버 스펙을 업그레이드한다. 단일 서버에서 모든 데이터를 처리하기 때문에, Data Integrity(데이터 무결성)와 Data Consistency(데이터 정합성)가 중요한 DB 서버 등에서 활용된다. 단일 서버에 부하가 집중되는 특징이 있고, 서버 이상 시 전체 시스템이 동작하지 않는 SPOF(Single Point of Failure) 문제가 발생할 수 있다. 하드웨어에 의존적이기 때문에 업그레이드 시 서버가 필연적으로 다운되고, 필요 부품 비용이 높을 수 있다. 여러 서버를 묶어 클러스터를 구성하거나, 데이터 일관성을 유지하기 위한 노력이 필요 없어 확장 과정이 비교적 단순하다. 물론 그 만큼 유연성은 떨어진다. Scaling o..
2023.05.26
no image
[Network] Hub(허브, L1), Switch(스위치, L2), Router(라우터, L3), 공유기(L4) 차이점 알아보기
허브(더미 허브) : L1 장비 L1(Physical Layer)에서 동작하며 멀티 포트를 통해 여러 컴퓨터 및 네트워크 장비들을 연결해주는 장치이다. 신호를 증폭해주는 리피터이기도 하다. 허브는 L1 장비라서 통신 시 목적지로서 활용할 수 있는 MAC, IP 정보가 없다. 따라서 통신 시 모든 장비에게 데이터를 전송하게 된다. 결국 허브 내 장비가 많아지면 그 만큼 대역폭에서 손해를 보게 되는 구조이다. 스위치 : L2 장비 L2(Data-Link Layer)에서 동작하며 Frames(프레임)의 MAC 주소를 참고해 해당하는 장비에 데이터를 전달해주는 장치이다. 스위치는 해당 네트워크의 MAC 주소를 테이블로 저장하고 있는데, 입력된 프레임의 MAC 주소가 테이블에 없을 경우는 허브와 동일하게 모든 장..
2023.05.08
no image
[Web] Web Server(웹 서버)와 CGI, Web Application Server(WAS, 앱 서버) 알아보기
Web Server(웹 서버) 클라이언트로부터 HTTP 요청을 받아 Static pages(정적 페이지)를 제공하거나, Dynamic Pages(동적 페이지) 요청을 WAS에 전달 하는 서버 및 프로그램을 의미한다. 서버가 설치된 PC 자체를 가리키는 말이기도 하다. 예시) Apache, Nginx Common Gateway Interface(CGI) Web Server(웹 서버)와 Application Program 사이 정보를 주고 받는 프로토콜이다. CGI를 통해 웹 서버가 Dynamic Pages(동적 페이지) 구성을 할 수 있다. 프로토콜이기 때문에 어떤 언어로도 작성될 수 있다. CGI는 클라이언트 요청을 처리 하기 위해 매번 Process(프로세스)를 새로 생성한다. 따라서 많은 요청이 발생..
2023.04.28
no image
[Web] Static pages(정적 페이지)와 Dynamic pages(동적 페이지) 알아보기
Static pages(정적 페이지) html, css, javascript 등으로 미리 작성된 파일 등을 서버에 저장해 놓고, 매 클라이언트 요청마다 동일한 페이지를 반환하는 경우다. 동적인 요소가 없기 때문에 별도의 DB 없이 Web Server(웹 서버)만으로 처리할 수 있는 영역이다. 미리 저장된 파일을 불러오기 때문에 로딩 자체가 빠르고, 공격적인 캐시 설정을 통해 이를 극대화할 수 있다는 장점이 있다. 다만 페이지 내용 변경 시 서버에 업로드해야 하는 과정이 필요한 만큼, 수정이 불편한 단점이 있다. Dynamic pages(동적 페이지) 클라이언트 요청에 따라 데이터를 가공해 맞춤형 결과를 반환하는 경우다. 동적 페이지를 위해선 Web Application Server(WAS)와 DB가 필요..
2023.04.26
no image
[OS] 운영체제의 자원 관리 기능 알아보기
운영체제의 자원 관리 운영체제의 주요 기능은 컴퓨터 자원을 효과적으로 관리하는 것이다. 컴퓨터의 핵심 하드웨어 자원인 CPU와 메모리는 CPU Scheduling(스케줄링)과 Memory Management(메모리 관리)을 통해 관리된다. 또한 주변 및 입출력 장치의 요청을 CPU가 효과적으로 처리하기 위해 Interrupt(인터럽트)를 도입했다. 1. CPU Scheduling(스케줄링) 1개의 CPU에서 다양한 프로세스를 수행하기 위해, 자원을 관리하는 방법 가장 효율적이면서, 특정 프로세스가 불이익을 받지 않도록 설정하는 것이 핵심 현재 CPU 자원을 뺏을 수 있는 스케줄링이면 Preemptive(선점형), 없으면 Non-preemptive(비선점형)이라고 함 FCFS(First Come First..
2023.04.08
no image
[OOP] Class와 Instance(Object) 알아보기 Feat. self, cls
Class 데이터로 어떤 문제를 해결하기 위해서, OOP 원칙에 따라 코드로 구현한 것이다. 다시 말하면 어떤 집단에 속하는 Attributes(속성)과 Methods(행위)를 코드로 구현해, 변수와 메소드로 정의한 것이다. 이러한 Class는 Object(객체)의 설계도 역할을 하기 때문에, 실제 메모리 상에 올라가진 않는다. 실제 메모리에 할당되는 것은 Class가 아닌 객체이고, 객체 각각은 instance라고 부른다. Object(Instance) Class에서 정의한 것(설계도)를 토대로 실제 메모리 상에 할당된 것(실제 사물)이다. 프로그램에서의 데이터와 행위를 묶어 만들어진, 실체이다. Class로 만들어진 여러 instance는 각각 독립적이다. Python의 self 과 cls ? sel..
2023.03.21
no image
[OOP] OOP(객체 지향 프로그래밍)의 개념과 특징 알아보기
OOP란? 필요한 데이터를 추상화하여 속성(Attributes)와 행위(methods)를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호 작용을 통해 로직을 구성하는 프로그래밍 방법이다. 데이터를 중심으로 필요한 기능을 함수로 구현하는 방식의 절차 지향 프로그래밍과 달리, OOP에선 데이터와 함수들을 묶고 이를 객체로 관리한다. 객체라고 하면 뭔가 말이 어렵고 한데, 그냥 우리가 일반적으로 사용하는 언어 구조와 비슷하다고 생각하면 이해하기 쉽다. 위 그림을 예시로 들면 우선 데이터는 '돈', '잔돈', '제품'이다. 앞서 절차 지향에선 데이터(돈, 잔돈, 제품)를 행위와 별도로 생각한다고 했다. 그래서 절차 지향에선 데이터에 대한 모든 행위를 '~돈을 ~', '~잔돈을~', '~제품을~'의 식으로 표..
2023.03.16
no image
[OS] 운영체제의 정의와 기능 알아보기
운영체제란? 사용자(다른 소프트웨어)와 하드웨어 사이를 연결하는 역할을 하는 소프트웨어이다. 운영체제는 커널과 시스템 프로그램으로 구성된다. 운영체제를 커널과 시스템 프로그램으로 구분한 것은 메모리를 효율적으로 관리하기 위함이다. 운영체제도 결국 소프트웨어 이기 때문에, 메모리를 효율적으로 사용하는 것이 중요하다. 이를 위해서 운영체제 중 가장 중요한 일부의 부분(기능)만 항상 메모리에 적재해 두고 이를 커널(Kernel)이라고 부른다. 반대로 필요에 따라 그때마다 활용되는 기능들은 시스템 프로그램(System Program)이라고 한다. 운영체제의 기능 운영체제는 사용자와 하드웨어 사이를 효율적이고, 편리하게 연결 시키기 위해 다양한 기능을 제공한다. 기능을 통해 사용자가 원하는 작업을 간단하게 할 수..
2023.02.20
no image
[OS] Burst(버스트)와 Bound(바운드) 알아보기
Burst(버스트) 버스트는 '한 작업을 연속적으로 처리하는 것'으로, 보통 작업 처리에 필요한 시간을 의미한다. 따라서 CPU(I/O) 버스트는 각각 CPU 명령 수행과 I/O(입출력 요청) 처리까지 걸리는 시간이라고 이해하면 된다. 프로그램은 CPU 버스트와 I/O 버스트가 번갈아가며 반복되는 방식으로 실행된다. I/O 버스트의 특징 I/O 버스트의 경우, 기본적으로 장치의 속도가 느리고, 추가로 커널 요청 작업까지 필요하기 때문에, CPU 버스트에 비해 상대적으로 긴 시간이 소요 된다는 특징이 있다. 실제로 I/O는 아래와 같은 복잡한 Cycle로 처리된다. CPU 버스트의 양상 CPU 버스트는 주로 CPU가 실행이 많이 필요한 작업을 수행할 때나, I/O 처리를 요청할 때 수행된다. I/O 요청 ..
2023.02.17
no image
[SQLD] 데이터 모델과 성능 파트 내용 정리
SQL 자격검정 실전문제집(노랭이)를 풀면서 정리한 내용입니다. 성능 데이터 모델링 분석 및 설계 단계부터 성능과 관련한 데이터 모델링을 수행하는 것 정규화, 반정규화 테이블 분할, 테이블 병합, 테이블 추가 컬럼 추가, PK/FK 조정 슈퍼/서브 타입 조정 성능 데이터 모델링 특징 데이터의 증가량이 클수록 성능 저하에 따른 성능 개선 비용이 증가 데이터의 크기가 문제가 되어 테이블 분할을 하게 되는 경우 이로 인해 할 일이 많아지기 때문 데이터 모델이 성능을 튜닝 하면서 변경될 수 있음 테이블 분할, 병합, 추가로 인해 데이터 모델 구조 변경 가능 데이터 모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화 가능(미리 고민하고 처리했으니까) 성능 데이터 모델링 수행 절차 데이터 모델링을 할..
2022.05.25
no image
[SQLD] 데이터 모델링 파트 내용 정리
SQL 자격검정 실전문제집(노랭이)를 풀면서 정리한 내용입니다. 모델링 현실 세계에 대해서 표현 정보 시스템 구축을 위한 데이터 관점, 프로세스 관점의 업무 분석 데이터 베이스 구축을 위한 분석 및 설계하는 과정 현실 세계의 데이터(what)에 대해 약속된 표기법에 의해 표현 모델링의 특징 추상화 : 현실 세계를 일정한 형식에 맞추어 표현 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 표현 명확화(정확화) : 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술 모델링이 중요한 이유 업무 정보를 구성하는 기초가 되는 정보들을 일정한 표기법에 의해 표현하기 위해서 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위해서 데이터 모델링 자체로 업..
2022.05.22