Computer Science

엄희관·2020년 11월 26일
0

Computer Science

목록 보기
1/1

IT 개발자를 희망하지만 기본적인 배경지식이 부족하다고 느껴 정리해야할 필요성을 느꼈다!

컨설턴트님의 추천으로 보게 된 게시글에서 필요한 부분을 요약하여 정리하였다.

참고한 게시글 출처는 글 하단에!!!

💡 1. 운영체제 & 하드웨어

💻운영체제(OS)

운영체제(OS)는 프로그램들을 실행하는 메인 프로그램입니다.

운영체제의 종류

  • Linux OS - 전세계에서 가장 많이 쓰이며 Android OS도 Linus OS 기반으로 만들어졌다.
  • Ubuntu OS
  • Cent OS 등

💻하드웨어

  • CPU
  • 메모리
    • CPU의 계산 결과를 저장해준다.
    • 프로그램이 실행되는 공간을 제공한다.
    • 메모리의 용량이 크다 = 많은 정보들을 처리할 수 있다.(더 많은 프로그램을 띄얼 수 있다.)
  • 디스크
    • 정보를 영구적으로 저장하는 역할
    • 프로그램을 컴퓨터에 저장하는 과정을 책임(cf 메모리는 프로그램이 실행되는 과정을 책임)

💡 2. About 프로그램

💻프로그램

  • 개발자들이 작성한 코드들로 컴파일 된 것 = 따라서, 코드(명령어)로 구성되어있다.

  • 프로그램을 실행하게 됐을 때 프로세스라고 한다.

💻프로세스

  • 실행되고 있는 프로그램
  • 프로그램(카톡, 브라우저 등)을 실행하면 메모리 위에 올라가게 되고 이것을 운영체제가 중재

💻프로그래밍 언어

  • 프로그램은 프로그래밍 언어를 사용해서 만들어진다.

  • CPU는 0, 1만 읽을 수 있다. = 따라서 코드를 컴파일하는 과정이 필요하다.

    • 컴파일을 위해서는 컴파일러가 필요하다. (컴파일러는 운영체제와 같이 중요한 시스템 프로그램 중 하나)
  • 고급언어(우리가 사용하는 프로그래밍 언어) vs 저급언어(컴파일러를 통해 변한된 기계어)

💡 3. 네트워크

컴퓨터와 컴퓨터간의 연결을 의미

네트워크 연결을 위해서는 크게 프로토콜, IP 주소, PORT가 필요하다.

  • 어떤 방식으로(어떤 프로토콜로), 어느 컴퓨터(IP주소)에, 어떤 프로그램(PORT)을 연결할 것인지가 중요

💻클라이언트, 서버

  • 클라이언트(Client) : 네트워크에서 정보를 요구

    • 웹, 앱에 해당
  • 서버(Server) : 정보를 제공

    • ex) 로그인 인증, 검색결과 제공

💻프로토콜

네트워크 통신이 기본적으로 전세계적으로 가능한 이유는 프로토콜이라는 규칙이 존재하기 때문

우리가 가장 많이 사용하는 프로토콜 HTTP - 페이지 주소 입력, 파일 다운로드 등

이 외에도 SSH, SMTP(메일 송신)이 있다.

HTTP는 네트워크 통신과정에서 보안에 취약한 단점이 있다.

→ 이를 보완하기 위해 HTTPS가 등장 - HTTP에 보안(Secure)을 강화한 프로토콜

따라서 대부분의 웹 사이트에서는 HTTP 프로토콜을 막고 HTTPS 프로토콜을 사용하는 것을 권장

💻IP

네트워크 통신을 위한 주소(주의 : 컴퓨터의 고유 주소가 아니다!)

연결하게 되는 네트워크(WiFi, LAN 등)를 기준으로 IP주소를 부여받는다.

💻PORT

컴퓨터 내에 프로세스가지고 있는 주소

cf) IP 주소는 컴퓨터끼리 연결을 위한 네트워크 주소

보통 네트워크 주소에 IP주소만 있으면 뒤에는 프로토콜의 기본 포트가 적용된다.

  • http의 기본 포트는 80
  • https의 기본 포트는 443

💻도메인

도메인 네임(Domain Name)은 사람이 쉽게 인식할 수 있는 네트워크용 영문 주소

브라우저에 입력하는 영문주소는 전부 (도메인) 네임 서버에 등록된 주소다. 따라서 도메인 네임을 이용하게되면 네임 서버를 거쳐서 IP를 반환 받는 작업이 필요하다.

💡 4. 라이브러리 & 프레임워크

💻라이브러리

프로그램의 특정 기능을 수행하도록 미리 짜여진 코드 뭉치(미리 작업하여 개발된 것들)

💻프레임워크

코드의 큰 뼈대(Frame)을 제공해줘서 그 뼈대에서 개발을 할 수 있도록 도와주는 것

라이브러리와 마찬가지로 개발자가 미리 만들어 놓은 코드이다.

ex) 웹을 개발할 때 보통 React, Angular, Vue 같은 프레임워크를 사용

ex) 서버 개발을 할 때는 JS(node.js)를 사용하면 express | Python을 사용하면 Django, Flask를 사용

※ 프레임워크 사용이 필수는 아니지만 아키텍쳐와 틀을 직접 개발하려면 시간과 비용이 많이 소비된다.

💡 5. API

프로그램과 프로그램을 연결시켜주는 매개체(프로그램들끼리 통신)

프로그램끼리 통신을 하기 위해선 프로그램을 만드는 개발자가 해당 프로그램이 잘 통신할 수 있도록 규칙들을 잘 설계하는게 중요하다.

  1. 접근할 프로그램의 규칙이 잘 짜여지지 않고 복잡한 경우
  2. 프로그램 보안 상 외부에서 누구나 사용할 수 없고 제한된 기능들을 간접적으로 제공하고 싶을 때

위와 같은 경우 API라는 것이 프로그램과 프로그램 사이의 중개자 역할을 해준다.

API(Application Programming Intergace)는 쉽게 규칙들의 집합을 의미한다.

API가 대신해주는 프로그램의 기능들을 미리 정리해서 규칙을 잘 세워두면 클라이언트는 접근할 프로그램을 모르더라도 API에 따라 손쉽게 통신을 할 수 있다.

API 개발 = 중개 프로그램을 대신해주는 것

따라서, 프로그램을 충분히 잘 이해하며 잘 규격화해야 한다.

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

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

API의 사용 사례

  • 날씨 데이터같은 공공 데이터를 손쉽게 접근할 수 있도록 국가에서는 기상청 API를 제공한다.
  • 회사의 데이터베이스의 보안 때문에 API 서버를 두고 클라이언트와 통신하게 한다.
  • 카카오 로그인
    • 클라이언트(개발자)들은 카카오 서버 개발자가 만든 서버 API를 이용
    • '카카오 로그인 API 문서'를 보면 어디(url)에 무엇(Parameter)을 보내면 무슨 응답(Response)을 줄지에 대한 내용이 있다.


[출처] https://www.grabbing.me/8d9e92b19e084c5a8cb173a695aa81af#0473b646e4984f6db46ed6ad3384adfb
profile
허브

0개의 댓글