개발자가 알아야 할 기초지식

Cherry·2022년 9월 7일
4

Basics

목록 보기
1/1
post-thumbnail

✔️ 운영체제와 하드웨어

1. 운영체제(OS)

프로그램들을 실행하는 메인 프로그램이다.
하드웨어의 지원이 있어야 프로그램들을 실행 할 수 있다.

세계적으로 가장 많이 쓰이고 있는 OS는 Liux인데,
우리가 많이 사용하는 Android OS 또한 Linux OS기반으로 만들어졌다.

2. 하드웨어

CPU : 컴퓨터 시스템을 통제하고 프로그램이 돌아가는 모든 계산을 한다.

메모리 : 전기적인 신호를 내부에 임시적으로 저장한다.
👉 CPU의 계산결과를 저장하는 역할
👉 프로그램이 실행되는 공간을 제공하는 역할

🪄 메모리 용량이 크다는 것은 그만큼 많은 정보들을 처리할 수 있다는 것이고, 더 많은 프로그램들을 띄울 수 있다는 것을 뜻한다.

디스크 : 정보를 영구적으로 저장하는 역할을 한다.

✔️ 프로그램

개발자들이 작성한 코드의 집합이 컴퓨터가 이해 할 수 있게 컴파일 된 것을 프로그램이라고 한다.
이것을 실행하게 됐을 때를 프로세스라고 한다.

프로세스 : 실행되고 있는 프로그램을 뜻한다.

우리가 프로그램을 실행하게 되면 메모리에 올라가게 되고 이를 운영체제가 관리하게 된다.
프로그램은 알다시피, 코드로 구성되어 있는데 그 코드를 실행시켜 프로그램을 작동시키는 것을 프로세스라고 한다.

프로세스는 프로그램의 실행정보와 코드, 데이터 세가지로 구성되어있다.

컴파일러 : 프로그램은 프로그래밍 언어로 만들어지게 된다. CPU는 0과1만 읽을 수 있어서 우리가 영어로 작성한 코드를 읽을 수 없다.
그래서 이를 변환해주는 컴파일이라는 과정이 필요하게된다.
컴파일을 위해서 필요한 것이 바로 컴파일러인데, 컴파일러는 운영체제와 같이 중요한 시스템 프로그램중에 하나이다.

우리가 사용하는 이해하기 쉬운 프로그래밍 언어는 고급언어이고, 컴퓨터가 바로 이해 할 수 있는 언어는 저급언어이다.

즉 컴파일 과정을 통해서 고급언어👉저급언어 로 변환된다는 것이다.

✔️네트워크

네트워크 : 컴퓨터와 컴퓨터 간의 연결

네트워크 연결은 크게 1. 프로토콜 2. IP주소 3. PORT
세가지로 이루어 져있다.
어떤 방식(어떤 프로토콜)로, 어디 컴퓨터(IP주소)에, 어떤 프로그램(PORT)을 연결할 것인가 ?

클라이언트와 서버 : 네트워크에서 정보를 요구하여 받는 쪽을 클라이언트, 정보를 제공해주는 쪽을 서버라고 한다.

예로, 우리가 사용하는 브라우저 웹이 클라이언트이고
로그인 인증을 해주고 검색정보를 재공하는 곳이 서버이다.

서버가 정보를 제공해준다는 것은 컴퓨터안에 정보를 제공해주는 서버가 실행되고 있다는 것을 의미한다.

서버컴퓨터에서는 목적에 맞는 정보를 제공하는 프로그램이 실행되고 있다.

웹에 사진을 제공해주는 웹서버, 클라이언트에게 데이터를 제공해주는 API 서버, 이미지들을 제공해주는 이미지서버와 비디오 파일을 제공해주는 비디오 서버등 !

프로토콜 : 네트워크는 개인이나 단체가 소유하고 있는 것이 아니다. 네트워크 통신이 전세게적으로 가능한 이유는 규칙이 존재하기 때문인데, 이 규칙을 통신프로토콜이라고 한다.

우리가 가장 많이 사용하는HTTP를 프로토콜의 예로 들 수 있다. 브라우저에서 정보를 받아올 때 HTTP 프로토콜을 사용하게 된다.
외에도 원격으로 컴퓨터에 접속하게 될 때는SSH 프로토콜을, 이메일을 보낼 때는 SMTP 프로토콜을 사용하게 된다.

🪄 HTTP 프로토콜이 정보보안에 취약하다는 단점이 있어서 보안을 강화한HTTPS프로토콜 사용을 권장한다.

IP : 네트워크 통신을 위한 주소이다.
우리가 연결하는 네트워크를 기준으로 IP주소를 할당받게 된다.

🪄 ex ) 125.233.456.7
0~255 사이의 수로 구성된 네 구간의 IP주소이다.
이를 IPv4라고하고, IP주소가 많아져서 IPv6가 나왔다.
스마트폰 IP주소는 IPv6 이다.

PORT : 컴퓨터내에 프로세스로 도달하기 위한 주소이다.
IP주소 뒤에 붙으며 IP가 컴퓨터간 네트워크 연결을 위한 주소였다면, 포트는 컴퓨터 내에서 프로세스가 갖고있는 주소이다.

🪄 IP주소만 있다면 기본포트가 적용된다.

  • HTTP : 80
  • HTTPS : 443

도메인 : 사람이 쉽게 인식할수있는 영문 네트워크 주소이다.

주소를 검색할때마다 IP 주소와 포트주소를 작성하기보다는 도메인 주소를 이용하여 주소검색에 용이하게 한다.
우리가 검색하는 영문 주소는 도메인 서버에 등록되어 있는 주소이다.
🪄 그래서 도메인 주소로 검색하게 된다면 네임서버를 거쳐서 IP를 반환받는 과정으로 검색이 이루어지게 된다.

✔️라이브러리와 프레임워크

라이브러리 : 프로그램의 특정기능을 수행하도록 미리 설계된 코드 집합체 (?)

예로 개발자가 브라우저웹에 영상기능을 개발하고 싶다면,
브라우저 영상 라이브러리를 사용하여 수월하게 작업이 가능하다.

브라우저 영상 라이브러리에는 이미 필요한 작업들을 다 개발을 해놨기 때문이다.

🪄 빠르고 쉬운 개발을 위해서는 라이브러리를 잘 활용해보자 !

프레임워크 : 개발자에게 코드의 큰 뼈대를 제공함으로서 뼈대를 기반으로 코드를 작성하기에 용이하게 해준다.

목적에따라 프레임워크를 선택할 수 있는데,
웹을 개발 할 때는 React, Angular, Vue프레임워크를,
서버 개발을 할 때는 Javascript (node.js)를 ,
expresspython개발을 위해서는 djangoflask를 사용한다.

✔️API

API : 프로그램과 프로그램을 연결시켜주는 매개체이다.
업로드중.. 출처 : 그랩의 블로그

접근할 프로그램의 규칙이 잘 짜여있지 않고 복잡한 경우나
보안 상 아무나 접근 할 수 없지만, 일부만 제한된 기능들을 간접적으로 제공하고 싶은 경우에 API가 중개자 역할을 하게 된다.

클라이언트 프로그램이 접근해야 하는 프로그램에 접근하지 않고도 API를 통해서 정보를 요청 할 수 있게 된다.

이때 API서버API를 제공하는 서버이다.

🪄 API서버는 데이터베이스를 대신해서 규칙들이 정의되어 있다. 예를 들자면 로그인하기, 상품정보보기, 결제하기 등 클라이언트들은 데이터베이스가 아닌 API서버와 통신하게 된다.

✔️ Git 과 Github

Git : 소스코드의 버전을 관리하는 툴

하나의 절대적인 프로젝트를 기준으로 개발자들이 프로젝트 코드를 다운받아서 작업을 하게 되는데, 작업이 끝나면 프로젝트에 작업한 소스코드를 업로드하는 과정으로 프로젝트가 진행된다. 이 과정을 Git을 도와준다.

작업이 끝난 소스코드를 Git에 업로드를 준비하는 과정을 Commit이라고 하고, 이 Commit을 Git에 Push하게 되면 최종적으로 기존의 Commit들이 쌓이면서 버전이 형성되게 된다.

만약 이전코드에 문제가 생기게 된다면 이전 버전(Commit)에서 작업이 가능하다.

이렇게 개발자들이 Commit을 쌓으면서 작업을 진행하게 되고, 다른 개발자들은 마지막 Commit을 기준으로 Fetch하여 그 위에 코드를 작성하게 된다.

Git에는 여러명의 개발자들이 함께 작업하기 수월하도록 브런치가 있다.

실제로 Git에는 메인(마스터)브런치가 있는데, 과정을 함께 알아보자.

  1. 개발자들은 메인 브런치를 복사하여 새로운 브런치를 작업한다.
  2. 그 안에서 Commit들을 쌓으며 작업한다.
  3. 마지막에 해당 브런치메인브런치머지(병합)시켜서 Commit들을 합친다.

Github : Git이 적용된 원격 코드 저장소이다.

Git의 설명에서 말했다시피, 개발자들은 커밋을 이용하여 작업하게 되는데, 이를 사용하기 위해서는 원격 저장소가 필요하다. 이 원격저장소의 역할을 하는 것이 Github이다.

함께 개발 배경지식에 대해서 공부해 보았다.
당장의 코딩지식과는 연관이 없을 수 있으나, 앞으로의 공부에 있어서 탄탄한 밑거름이 되어 줄 것이라 확신한다.

공부출처 : 그랩의 블로그
그랩의 블로그를 참고하여 공부했다. 강추강추 ✌️

profile
🍒의 공부공간

0개의 댓글