Computer Science 11

[Linux] SSH pem key 생성 (EC2에 SSH 연결하기)

AWS EC2에 파일을 업로드해야하는 경우가 생겼다. EC2 키페어를 사용하여 클라이언트에서 접근할 수도 있지만 EC2 인스턴스 키페어는 관리자가 따로 있고 권한이 없어 생성이 어렵다. 이런 경우 클라언트에서 생성한 Public key를 이용하여 EC2에 SSH 접근이 가능하다. 방법은 아래와 같다. 1. Client에서 SSH 로그인을 위한 RSA(공개키-개인키)를 생성한다. 2. Server에 authorized_keys 파일을 생성한다. 3. Client에서 Public key를 복사한다. 4. Server의 authorized_keys에 붙여 넣는다. 5. Client의 Private Key를 .pem 확장자로 변경한다. 6. Client에서 key 테스트를 진행하여 연결을 확인한다. 구체적인 방..

Git hub branch 작업 프로세스

Pull Request (PR) 이란?: push 권한이 없는 사용자가 해당 오픈소스에 기여를 할 때 사용하는 방법 Upstream : Maintainer(팀장)의 Github Repository Origin : Maintainer(팀장)의 Github Repository를 Fork한 나의 Github Repository Local : 나의 Local Repository 1. Upstream Repoitory (main)에서 나의 Origin Repository (main)으로 Fork 2. Origin Repository (main)에서 Local Repository (main)으로 Clone - Origin Repository와 Local Repository에 각각 branch 생성 3. Local ..

[Etc] 3계층 구조 (3 Tier - Architecture)

3계층 구조(3 Tier - Architecture) 란? 어떠한 플랫폼을 3계층으로 나누어 별도의 논리적/물리적 장치에 구축 및 운영하는 형태 웹 서버 운영을 예로 들면, 서버 한대에 한꺼번에 모든 기능들을 구축하는 것이 아니라 데이터를 저장하고 읽는 데이터 계층(Data Tier), 데이터를 처리하는 애플리케이션 계층(Application Tier), 그리고 데이터를 표현해주는 클라이언트(프레젠테이션) 계층(Client Tier) 과 같이 각각 3계층으로 나누어 각각의 기능으로 별도의 논리적/물리적인 장치에서 운영하는 방식 Citent(Presentation) Tier 클라이언트(프레젠테이션) Presentation Logic Application Tier 웹/애플리케이션 서버 Business Log..

[CLOUD] 서비스 메시 (Service Mesh)

서비스 메시(Service Mesh)란? 서비스 메시는 서비스 간의 통신을 제어하고 표시하고 관리할 수 있도록 하는 데 특화된 마이크로 서비스를 위한 인프라 계층입니다. 기존의 서비스 아키텍처에서의 호출은 직업 호출 방식이었다면, 서비스 메시에서의 호출은 자체 인프라 계층의 proxy간에 이뤄집니다. 서비스 메시를 구성하는 개별 proxy는 서비스 내부가 아니라 각 서비스와 함께 실행되므로 'sidecar'라고도 합니다. 각 서비스에서 분리된 이러한 sidecar proxy들이 모여 Mesh Network를 형성합니다. Mesh Network 마이크로 서비스의 단점 서비스 메시 없이 동작하는 마이크로 서비스는 서비스 간 커뮤니케이션을 통제하는 로직으로 코딩해야 하기 때문에 개발자들이 비즈니스 로직에 집중..

[OS] 멀티 스레드(Multi Thread) vs 멀티 프로세스(Multi Process)

멀티 스레딩 (Multi Threading) 보통 우리가 작성하는 코드를 실행하면 하나의 프로세스로 동작합니다. 또, 하나의 프로세스는 보통 하나의 스레드만 사용하여 동작합니다. 아래의 파이썬 코드를 통해 알아보도록 하겠습니다. HTML 삽입 미리보기할 수 없는 소스 실행 결과는 다음과 같습니다. process_id : 25939 thread_id : 4539137536 이렇게 하나의 프로세스에서 하나의 스레드만 사용하는 것을 "싱글 스레딩"이라고 합니다. 우리가 작성하는 대부분의 코드들은 이렇게 싱글 스레딩입니다. 반면, 하나의 프로세스에서 여러 개의 스레드를 사용할 수도 있습니다. HTML 삽입 미리보기할 수 없는 소스 실행 결과는 다음과 같습니다. # 같은 프로세스 process_id : 27180..

Computer Science/OS 2022.08.14

[OS] CPU Bound vs I/O Bound

컴퓨터가 수행하는 하나의 작업은 CPU 작업(CPU Bounded Task)과 I/O 작업(I/O Bounded Task)으로 이루어집니다. CPU Bounded Task CPU Bounded Task는 작업 수행 시 I/O보다 CPU를 더 많이 쓰는 작업을 의미합니다. 많은 연산이 필요한 경우 이에 해당하며 예로는 머신러닝이 있습니다. (I/O 작업도 있지만 CPU 사용량이 압도적입니다.) I/O Bounded Task I/O Bounded Task는 작업 수행 시 CPU보다는 I/O 작업이 많은 경우를 의미합니다. 예로는 크롤링, DB 데이터 송수신 등이 있습니다. 일반적으로 웹, WAS 서버는 I/O Bounded한 경우가 많습니다.

Computer Science/OS 2022.08.14

[OS] 병렬성과 동시성

병렬성과 동시성은 한정된 자원(CPU, 메모리)에서 효율적으로 프로세스를 사용하기 위해 생긴 개념입니다. 동시성 동시성은 기본적으로 CPU 1코어를 기준으로 이야기합니다. (실제는 물리적으로 CPU 1개의 코어에서만 동작하는 개념이 아닌, 제한된 자원에서 여러 작업을 한 번에 실행시키려는 논리적 개념입니다.) 이해를 돕고자 컴퓨터 발전의 초기 때를 예로 들어보겠습니다. 컴퓨터 발전 초기에는 컴퓨터 한 대당 CPU는 하나였습니다. 그렇다보니 CPU가 한 번에 처리할 수 있는 명령도 하나였습니다. 만약 이런 상황에서 I/O 작업들이 많아진다면 어떻게 될까요? I/O 작업을 하는 동안 CPU는 대기 상태에 있는 I/O Blocking이 발생하게 됩니다. (이를 CPU 블락 상태라고 합니다.) 만약 이 I/O ..

Computer Science/OS 2022.08.14

[OS] 프로세스(Process)와 스레드(Thread)

프로세스(Process) 프로세스는 운영체제에 의해 연속적으로 실행되고 있는 프로그램을 의미합니다. 프로그램 실행 시 운영체제가 메모리 위에 프로세스를 생성하게 되며 운영체제에 의해 CPU, 메모리 자원을 할당받게 됩니다. 프로세스는 독립된 메모리 영역으로 Code, Heap, Data, Stack을 할당받습니다. Code : 개발자가 작성한 코드 Data : 전역변수, 정적변수, 배열, 구조체 등 프로그램이 실행되면서 생기는 정적인 데이터 Stack : 함수 호출과 관련된 정보(실행정보, 지역변수, 파라미터 등)이 저장됩니다. 일반적으로 컴파일 타임에 Stack의 크기가 결정됩니다. Heap : 런타임에 동적으로 메모리를 처리해야 하는 상황에서 사용되는 공간입니다. ex) Array를 사용하거나 외부 ..

Computer Science/OS 2022.08.13

[Network] 가상호스트(Virtual Host), 프록시(Proxy), 게이트웨이(GateWay)

가상호스트(Virtual Host) 가상 호스트(Virtual Host)란 무엇일까요? 웹 서버에 존재하는 주 호스트의 도메인 외 추가로 여러 도메인을 등록하여 사용하는것을 의미합니다. 즉, 하나의 서버(동일 IP)에서 여러 도메인을 사용하는 것을 의미합니다. 예를 들어보겠습니다. 1. 일반적인 웹서버의 경우 도메인 IP aaa.com IP : 111.111.111.111 bbb.com IP : 222.222.222.222 다른 도메인일 경우 다른 IP를 가지게 됩니다. 2. 가상호스트 웹서버의 경우 도메인 IP aaa.com IP : 111.111.111.111 bbb.com IP : 111.111.111.111 하나의 컴퓨터(서버)나 IP로 여러개의 도메인을 가지게 됩니다. 즉, aaa.com, bb..

[Etc]Compile(컴파일) vs Linking(링킹) vs Debugging(디버깅) vs Build(빌드)

[컴파일(Compile)] 컴퓨터가 소스 코드를 읽게 하기 위해 코드를 기계어로 번역하는 과정. 이때 코드가 여러 개의 c파일이라면 따로따로 번역해서 각각을 오브젝트object 파일로 만든다. [링킹(Linking)] Object File들을 연결. Object file + Runtime Library → Executable programe(실행파일) ※Object File : 컴파일에 의해 생성된 목적파일(Source File의 컴파일 결과물) [빌드(Build)] 코드 → 컴파일 → 링킹 → 실행파일 과정 ex) .cpp, .cs, . python ...(코드파일) → .exe(실행파일) ※ 실행파일 실행 : Run, Execute 등 [디버깅(Debugging)] 버그를 제거하는 과정. 요약 컴파일..

반응형