본문 바로가기
Books

비전공자를 위한 이해할 수 있는 IT지식

by 까망우동 2023. 2. 20.
반응형

Index

    비전공자를 위한 이해할 수 있는 IT지식

     

    책을 읽으며 기록해두고 싶은 내용들을 정리해보았다. 

     

    그전에 일단 IT 란 뭘까 찾아봤는데, 아래와 같다고 한다... 

    IT라는 단어는 이제 사전적인 의미로만 사용하고 있는 수준은 아닌것 같다

    IT란? information technology 
    인터넷의 성장으로 발달한 새로운 영역으로 컴퓨터 하드웨어, 소프트웨어, 통신 관련 서비스와 부품을 생산하는 산업을 IT라고 합니다. 인터넷이 일반화되면서 정보기술 산업은 통신 분야를 포함하게 되어서 IT라고 한다면 정보기술에 통신을 더한 정보통신기술

     

    # 프로그래밍 언어 , 컴퓨터의 구성요소

     

    사람(명령)           →            컴파일러(전달)          →         컴퓨터(실행)

                      *프로그래밍 언어                              0,1 전환

                             개발자

     

    • CPU : (중앙처리장치, 스펙에서는 프로세서 라고 부르기도함) 컴퓨터의 머리역할, 연산을 할 때 필요한 데이터를 HDD/SSD 에서 가져옴 (i3,i5.. ). CPU 의 '코어'는 동시에 처리하는 작업의 갯수. 코어 외에도 쓰레드/클럭/캐시 메모리 등 CPU 의 성능을 판단할 수 있는 다양한 기준이 있다. 
    • RAM : (메모리) CPU 에서 HDD/SDD 로부터 바로 데이터 끌어쓰면 너무 느려서 큰 데이터 뭉치는 RAM에 옮겨씀
    • HDD/SSD : (보조기억장치) 컴퓨터의 '창고' 역할, 전원이 꺼져있어도 남아있음. 본체에 덕지덕지 붙여쓰지.. 
    • OS (Operating System) '운영체제' : 위 하드웨어 (CPU,RAM,SSD)를 관리해서 유저가 프로그램을 편하게 쓸 수 있게 해주는 시스템 //  PC용 = 윈도우, 맥OS, 리눅스 ... Mobile용 = iOS, Android ... 

    OS 마다 사용가능한 언어가 정해져 있음 (Android = Java,Kotlin)

    → OS 별로 다른 언어로 프로그램 각각 생성/수정해야했음

    → Java 의 JVM(Java Virtual Machine)은 운영체제 위에 프로그램을 만들어 운영체제 공유 가능 .. 그래서 Java 가 개발자 사이에서 광범위하고 쓸데가 많다는 것... 

     

    # 네트워크, 클라이언트, 서버란?

    • IP주소 (internet protocol address) : 위치와, 컴퓨터에 따라 고유함. 집에서 카페로 이동하면 IP가 바뀜
    • Network의 구조

    LAN (Local Area Network) → MAN (Metropolitan Area Network) → WAN (Wide Area Network)

    PC 끼리 연결된 작은 지역 LAN이 모여서… MAN이 모여셔…

    • 클라이언트 ↔ 서버 

    클라이언트 (='요청'PC, 프론트앤드) ↔ 서버 (='제공'PC,백앤드)

    클라이언트든, 서버든.. 어쨋든 CPU, HDD, RAM 이 있는 PC 이다.. 

    ※ 리눅스(OS)  : “서버” 프로그램은 주로 리눅스 위에서 돌린다.. 리눅스의 유명한 버전들이 Ubuntu , Red hat (윈도우의 XP,7,10 처럼..) 이고,, 이러한 리눅스 서버를 대신 운영해주는 업체가 Cafe24, 가비아, AWS(Amazon Web services). 

    AWS 는 특히 서버 컴퓨터 대여 뿐 아니라 솔루션도 제공

     

    # API 와 JSON 

    • API : (Application Programming Interface) 컴퓨터나 소프트웨어간의 연결 (OS, 응용프로그램). 컴퓨터와 사람을   연결시키는 사용자인터페이스(UI) 와 대조되는 개념. (ex. 클라이언트와 서버간을 잇는 체계)
      1. 클라이언트 ↔ 서버 응답체계 (역할1)
        • 서버(Back-End) 개발자 = API를 개발함 ↔ 클라(Front-End) 개발자 = API를 사용함
        • 클라→API→서버 (Request) // 클라←API←서버 (Response) 
        • 각 서버별로 역할(기능) 과 주소를 정의하고, 데이터의 전달기능도 함께 넣음.. ex) 서버A = Login 담당
        • 이러한 데이터를 전달하는 형식 중 가장 대표적인게 JSON
      2. 서로 다른 Software 간 특정 기능(System) 응답 (역할2)
        • Software A  → API (요청/응답) ← Softwafer B
        • SDK : A 에 없는 기능을 제공해주는 B 를 일커름. API는 제공해주는 B에서 생성필요. ex.배달의민족 에서는 '네이버 지도' 라는 SDK를 설치 후, SDK에서 제공하는 API를 통해 요청 보내, 지도기능을 사용할 수 있음 

    요청자(클라) vs 응답자(서버) 관점 

    1. 클라 관점 (요청 API) 
    CRUD : Create - Read - Update - Delete 4가지 기능이 가능하도록 요청 → 이 각각의 요청은 기능별 고유 서버주소(API)를 갖는다. 클라이언트는 각 API 주소(기능)에 맞게 요청한다. 
    RESTful API : Representational State Transfer 한 방식. API 가 너무 많고, 중구난방해지는걸 방지하는 체계. 
    → CRUD 를 하나의 주소로 스티커(*Method)를 붙여서 전송하는 방식 
    Create = *POST(생성) , Read = *GET(불러오기) , Update = *PUT/PATCH(전체/일부 수정), Delete = *DELET(삭제)

    2. 서버 관점 (응답 API) 

    HTTP (Hyper Text Protocol : 서버-클라이언트 사이 메시지 교환규칙) 코드를 통해 응답
    2xx = 성공

    4xx = 클라이언트(요청) 의 오류 
    5xx = 서버(응답)의 오류 

     

    • JSON : API 에서 데이터를 전달하는 대표형식. { Key1:Value1, Key2:Value2 } →  Value 값이 여러개면 배열(Array) 을사용하고 [ ] 로 표시. API 에 data 첨부하는 파일의 이름도 JSON (딕셔너리와 비슷함) 

          ex. JSON 형식 : {“Category”: “음료”, “sort”: “desc”, “items”: [“카페 모카”, “카페 라테”, “아메리카노”]}

     

    # Web 과 Application 

    Web 과 Application 은 Front-End 영역이다. 

    • 어플리케이션(Application) : 운영체제 위에 설치해서 사용하는 프로그램. 윈도우(PC) 에서는 응용 프로그램 (Application Software) 라고 부르고, 모바일 에서는 앱(App) 으로 통칭함   
    • 웹(Web) 의 구성 ; Web = 텍스트/영상/소리 등 멀티미디어 정보를 하이퍼텍스트 구조로 제공하는 서비스  
      1. HTML (Hyper Text Markup Language) : 웹 문서를 만들기 위한 웹 언어. 프로그래밍 언어 X (OS 종류와 무관하게 브라우저로 모두가 동일한 웹에서 정보를 열람할 수 있도록 함). *태그(HTML 을 구성하는 코드)를 활용..            ex. <p> 문단, <h> 헤더, <a> 링크: HPML의 한 문서에서 다른문서로 이동할 수 있도록..
      2. CSS : HTML 에 디자인을 입히기 위한 코드. HTML(정보) + CSS(디자인) = '퍼블리싱' 
      3. JS (Java Script) : 웹에서 프로그래밍 역할을 하는 언어, API 를 이용한 특정 기능 수행 등 // Java 와는 무관 
    • 브라우저(Browser) : 웹 정보(site)를 화면에 표시해주는 '어플리케이션' (설치필요) ex. 크롬, IE, 사파리, 파이어폭스..

    # 데이터베이스 (Database) 

    • 무결성(Integrity) 의 원칙을 따른다 : 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증
    • 관계형 데이터베이스 (RDB: relational database) : 데이터를 엑셀처럼 테이블 형식으로 표현한 것. 표 형식을 Table 이라고 표현하고, 엑셀자체를 스키마(Schema) 혹은 데이터베이스라고 함 
    • RDBMS : 관계형 데이터베이스 관리 시스템 ex. MS SQL, Oracle, MySQL ..
    • 데이터의 저장은 클라이언트(Local) , 서버 어디는 저장가능하다. 데이터를 어디서 불러올지 알려면 'API 문서'를 보면된다. ex. 에버노트에서는 offline 상태에서는 클라이언트(로컬) 에 저장하고, online 접속되면 서버에 동기화 저장 
    • 데이터를 '내부' 에 저장한다는 것은? Front End = 클라 = 네이티브 = 내부DB = 로컬 에 저장하겠다...                           → 어플리케이션 업데이트 하지 않으면 바뀌지 않는 데이터, 대신 다운로드 할 필요 없어 부하가 적음 
    • 데이터를 '서버' 에 저장한다는 것은? Back End = API 요청 = 그냥DB = 서버                                                                → 서버에서만 update 해두면 불러올때마다 갱신됨, 대신 다운로드 받아야해서 Network 부하가 큼  

    # 프레임워크 와 라이브러리

    프레임워크는 틀 , 라이브러리는 도구..  

     

    1. 프레임워크 (Framework)

    • 어플리케이션이나 솔루션 개발을 수월하게 하기위해  구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 사능하도록 모듈단위로 제공하는 환경 (코드의 일부만 수정하면 Font,Color 등이 바뀌는..) 
    • OS 의 Application 개발용 Framework : ex. iOS 개발을 위해서는 App Frameworks 를 사용, AppKit 는 맥OS 에 올라가는 어플개발을 위함,
    • Web 개발용 Framework: ex. Angular.js (구글) , React.js (페이스북) , Vue.js 가 3대장
    • 언어에 따라 유명한 Framework : ex. Spring (Java) , Django (Python), Rails (Ruby)

    2. 라이브러리 (Library)

    • 둘 간의 구분은 모호함. 라이브러리가 조금 더 작은 개념으로 생각.. 
    • 프레임워크가 어플리케이션 만들 때 원하는 기능구현에만 집중하게 기본적으로 필요한 틀을 제공하는 느낌이라면,   라이브러리는, 개발할때 반복 코드 작성을 줄이기위해 언제든 부를수 있게 Class & Function 단위로 만들어진 모듈

     

    이상 '비전공자를 위한 이해할 수 있는 IT지식'  책을 읽고 기록하고자 하는 내용에 대한 포스팅을 마친다.

    제목처럼 프로그래밍, 코딩, IT 에 대한 두려움이 있는 비전공자분들께서 읽기에 정말 좋은 책 같다!!

    반응형

    댓글