일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스키마모델
- 자바
- 리액트
- golang
- 데이터스키마
- 컴공과개념정리
- 개발자되기
- 파이썬
- 코멘토실무PT
- 유데미
- tableplus
- postgredb
- 개발공식문서 어려움
- 데이터베이스
- 개발자공통지식
- 웹서버
- 개발공부
- Go언어실무
- 개발 공식문서 읽기
- 개발 영어실력
- 코멘토
- jsx
- HTTP
- 자료구조
- 개발 공식문서
- 코딩강의
- 개발실무
- 알고리즘
- 실무PT
- Go언어
- Today
- Total
웹개발일지
기초 CS 지식 정리하기 본문
1. CI/CD
1) 사용 요지 : 개발자가 직접 매번 코드를 수정하고 빌드, 테스트, 배포까지 하면 상당히 리소스가 든다. 이 단계들을 자동화하기 위해 CI/CD가 생겼다.
2) CI: '지속적 통합'을 의미. '지속적 통합'이란, 버전 관리 시스템에 대한 소스 변동 사항을 정기적으로 커밋하여 모든 사람에게 동일한 작업환경을 제공하는 것이다. 빌드, 테스트를 자동화해준다. CI를 성공적으로 구현할 경우, 코드 변경사항이 정기적으로 빌드 및 테스트 되어 통합된다. 이는 여러 개발자가 동시에 작업할 때 생겨날 수 있는 충돌 문제 또한 방지한다.
3) CD: '지속적 배포'를 의미. 배포과정을 자동화 해준다. 개발자의 변경사항을 리파지토리에서 고객이 사용가능한 프로덕션 환경까지 자동으로 릴리스한다. 파이프라인의 이전 단계를 모두 성공적으로 통과하여 변경사항을 프로덕션 환경에 자동으로 릴리스 한다. 지속적 배포를 채택하면 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있다.
2. 프로세스와 스레드의 차이
프로세스는, 운영체제로부터 자원을 할당받는 '작업의 단위'이다. 스레드는 프로세스가 할당받는 자원을 이용하는 '실행의 단위'이다. 프로그램이 어떤 작업을 하기 위한 실행파일이고 프로세스가 실행되어 작업중인 컴퓨터 프로그램! 프로그램은, 파일이 저장장치에는 있지만 메모리에는 올라가있지 않은 '정적인'상태인 반면, 프로세스는 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태이다. 프로그램은 쉽게 말해 그냥 코드 덩어리인 것이고, 프로세스는 그 코드 덩어리를 실행한 것!
+ 부연 설명: 프로세스는 프로그램을 실행시켜 정적인 프로그램이 동적으로 돌아가고있는 상태를 말한다. 즉, 컴퓨터에서 작업 중인 프로그램을 의미하는 것이다. 작업관리자에 떠있는 실행중인 프로그램들에 대한 확인이 가능하다. 프로세스가 실행되면 각 독립된 영역을 할당 받는다. Code, Data, Stack, Heap 영역에 각 할당 받는다. 여기서 메모리영역에 대한 설명이 필요하다. Code 영역은 프로그래머가 작성한 프로그램이 저장되는 영역으로, CPU가 해석 가능한 기계어로 저장된다. Data영역은, 코드가 실행되며 사용하는 전역변수나 기타 데이터들이 모여있다. Stack은 지역 변수와 같은 호출한 함수가 종료되면 돌아올 임시적인 자료를 저장하는 독립적인 공간이다. 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. 만일, stack 영역을 초과하면 stack overflow가 발생한다. '힙'은 생성자, 인스턴스와 같이 동적으로 할당되는 데이터를 위해 존재하는 공간이다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
+ 프로세스는, 최소 1개이상의 메인 스레드를 갖는다. 각 프로세스는 별도 주소 공간에서 실행되며 기본적으로 다른 프로세스의 자원에 접근할 수 없다. 한 프로세스가 다른 프로세스 자원에 접근하려면 IPC 통신을 사용해야한다. (소켓 등을 이용한 방법)
3. 컨택스트 스위칭
CPU는 한 번에 한 가지 명령밖에 처리하지 못한다. 따라서 동시 실행이 아니라, 빠르게 프로세스를 번갈아 가면서 실행하는게 멀티 프로세싱이다. 다시말해서 멀티프로세싱이란 하나의 프로그램을 여러 개의 프로세스가 처리하도록 하는 것이다. 컨택스트 스위칭은 CPU 코어를 여러 프로세스가 돌아가면서 작업을 처리하는 방식이다. 캐시 메모리 초기화 등 무거운 작업이 진행되면 오버헤드가 발생한다. 작업이 공유되지 않기 때문에 컨택스트 스위칭 발생시 데이터를 처음부터 불러와야 한다.
4. 스레드
스레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위이다. (하나의 프로세스 내에서 동시 진행되는 작업 흐름의 단위) 예를 들어, 크롬 브라우저가 실행되면 프로세스 하나가 실행 된다. 그 상태에서 우리는 온라인 쇼핑 및 게임을 하기도 한다. 즉, 하나의 프로세스 안에서 여러 가지 작업 흐름이 동시 진행된다는 건데 이러한 일련의 작업 흐름들을 스레드라고 하며 이게 여러개일 때 멀티 스레드라고 부른다. ( 하나의 응용 프로그램을 여러 개의 스레드로 구성하여 각 스레드마다 작업 처리하도록 함) 프로세스 내에서 각 필요한 스택만 할당 받고 Code, Data, Heap 영역은 공유해서 각 스레드가 공유한다. 같은 프로세스 내 스레드 끼리 Heap 등 자원을 공유하며 실행된다. 즉, 스레드는 공유자원인 Heap 영역에 있는 변수를 수정할 수 있다. 여기서 프로세스와 스레드의 차이가 나오는데 프로세스는 자원을 공유하지 않지만 스레드는 자원을 공유한다는 점이다.