공통
객체 지향? 객체 지향의 특성
1. OOP 개념에 대해서 설명하세요. OOP의 배경 OOP 개념이 유행하기 전에, 개발자들은 절차 지향적인 프로그래밍으로 코드를 개발하고 있었습니다. 하지만 점점 프로그램의 규모가 커질수록 유지보수에 어려움이 있는 문제점이 있었는데요. 이러한 문제점을 해결하고자 OOP 패러다임이 탄생하였습니다. (탄생은 아닐지라도 유행..?) 객체란? 먼저 객체란, 실 세계에 존재하는 사물 또는 생명체를 의미합니다. 객체 지향, OOP OOP란, 객체 지향 프로그램으로, 말 그대로 "객체"를 지향하는 프로그램인데요. 객체지향에서 애플리케이션은 객체들의 집합으로 구성되며, 그 애플리케이션의 기능들은 각 객체들 간의 상호작용을 통해서 구현됩니다. 그리고 각 객체들 사이의 상호작용은 객체들 사이에 주고받는 메시지로 표현된다..
[그림으로 공부하는 IT인프라 구조] 4장 정리
1. 직렬/병렬 CPU 관점에서의 병렬 최근 서버는 물론 PC에도 여러 개의 CPU가 탑재되어 있다. 이런 배경에는 소비 전력과 발열 문제를 들 수 있다. CPU 제조사가 클럭 속도를 올리는 대신에 코어 수를 늘려서 이 문제를 해결하려고 방침을 전환하였기 때문. 시스템 관점에서의 병렬 대규모 웹 서비스에서는 방대한 수의 사용자 요청을 처리해야 하므로 수많은 서버를 배치해서 병렬로 처리하고 있다. 이처럼 주변에는 병렬 처리가 넘쳐나고 있지만, 무조건 병렬화한다고 해서 성능이 향상되는 것이 아니다.ㅋ 직렬 vs 병렬 여러 개의 물건이 일직선으로 나열돼 있는 것을 직렬, 두 줄 이상으로 나열돼 있는 것을 병렬이라고 한다. 컴퓨터에서의 병렬 성능이 아무리 좋은 하드웨어라도 혼자서 처리할 수 있는 양이 정해져 있..
[그림으로 공부하는 IT인프라 구조] 3장 정리
1. 프로세스와 스레드 프로세스 및 스레드는 프로그램 실행 파일 자체가 아니라 OS상에서 실행돼서 어느 정도 독립성을 가지고 동작하는 것. 프로세스 및 스레드가 활동하려면 메모리 공간이 필요한데, 이것은 커널에 의해 메모리상에 확보된다. 프로세스 vs 스레드 프로세스는 전용 메모리 공간을 이용해서 동작하는 반면, 스레드는 다른 스레드와 메모리 공간을 공유하고 있는 운명 공동체이다. 프로세스는 개별 처리 독립성이 높은 반면, 독자 메모리 공간을 가지기 때문에 생성 시 CPU 부하가 스레드와 비교해서 높아진다. 2. OS 커널 OS에서 커널은 심장이자 뇌이며 척수이다. 커널은 다양한 역할을 갖지만, 가장 중요한 것은 뒤에서 무슨 일이 벌어지는지 은폐하면서도 편리한 인터페이스를 제공하는 것이다. (이러한 이유..
[그림으로 공부하는 IT인프라 구조] 1장, 2장 정리
1장. 인프라 아키텍처를 살펴보자 1-1. 설계와 트레이드오프 아키텍처나 설계 요소에는 반드시 장점과 단점이 공존한다. 장점만 있다면 가장 좋은 것을 취하면 되지만, 단점은 가장 영향력이 적은 것으로 선택하는 것이 어렵기 때문에 반드시 취사선택해야 할 상황이 발생한다. 1-2. IT 인프라의 구성 방식 집약형 아키텍처 분할형 아키텍처 A. 집약형 아키텍처 대형 컴퓨터 (범용 장비, 호스트, 메인 프레임으로 불림)를 이용해서 모든 업무를 처리하는 형태. 시스템 아키텍처라는 관점에서는 하나의 컴퓨터로 모든 처리를 하기 때문에 집약형이라고 할 수 있다. 구성이 간단하나, 확장성에 한계가 존재. B. 분할형 아키텍처 여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조. 개별 컴퓨터의 안정성이 낮아도 괜찮..
링커와 로더
컴포넌트 컴포넌트란 배포 단위 (자바의 경우 jar 파일) 여러 컴포넌트를 서로 링크하여 실행 가능한 단일 파일로 생성할 수 있음. 컴포넌트 역사 구시대 절대적 로드 방식으로, 프로그래머가 로드할 메모리의 위치를 직접 정해야 하고, 프로그램 위치가 한번 결정되면 재배치가 불가능. 라이브러리의 경우 라이브러리 함수의 소스 코드를 애플리케이션 코드에 직접 포함시켜 단일 프로그램으로 컴파일 라이브러리는 바이너리가 아니라 소스 코드 형태로 유지 ⇒ 매우 느린 컴파일 속도 애플리케이션과 라이브러리의 분리 컴파일 시간을 단축시키기 위해서, 라이브러리의 소스코드를 애플리케이션 코드로 부터 분리. 함수 라이브러리를 개별적으로 컴파일하고, 컴파일된 바이너리를 메모리의 특정 위치에 로드. 링킹 로더의 등장 위의 문제를 해..