Notice
Recent Posts
Recent Comments
«   2024/10   »
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
10-11 00:15
Archives
Today
Total
관리 메뉴

Developer_Neo

1주차 워크북 본문

동아리

1주차 워크북

_Neo_ 2021. 10. 1. 22:30
반응형

핵심 개념 키워드

  • 서버와 서비스 서버의 역할
    • 요청을 받으면 처리하여 응답하는 존재
    • 어떤 서비스를 제공할지 알아야 하므로 요청을 통해서 알아낸다.
    • 서비스란: 예로써 설명을 하면 강사가 서버라고 하면 강사가 제공하는 강의나 pdf파일등이 서비스라고 할 수 있습니다.
    • : 클라이언트가 요청을 하면 서버에서 어떤 방식으로 수행해야 하는지를 응답으로써 클라이언트에게 주는 것이다.
    • extra
    • 서버는 여러가지 종류로 나뉘어지는데 웹 서버와 데이터 베이스 서버 중간에 위치하는 애플리케이션 서버, 일종의 슈퍼 컴퓨터인 컴퓨팅 서버 등이 있다. 이 서버들로 요청이 들어왔을 때 서비스들을 제공하면서 처리가 된다. 예를 들어 이메일 서비스, 파일 전송 서비스, 원격 제어 서비스, 온라인 게임 서비스, 웹 서비스 등을 제공한다.
  • 클라이언트 - 서버 관계
    • 여러 개의 클라이언트가 서버에 요청을 하게 되면 서버가 응답을 하게 됩니다. 여기서 이 응답을 client에게 전달하면서 client는 해당하는 것을 사용자에게 보여주거나 액션을 취해줍니다.
  • 서버의 동작 방식과 순서(요청이 들어왔을 때 서비스가 어떻게 처리되는가?)
    1. 클라이언트가 서버에 request (파일을 주세요, 로그인..)
    2. 서버 프로그램(서버)이 client에게 알맞는 response를 주기 위해 request에 따른 맞는 파일을 해석할 수 있는 Backend Language에게 찾아달라고 서버프로그램이 request.
    3. Backend Language는 파일을 해석하여 DB에 query를 날린다.
    4. DB는 query에 대한 결과를 Backend Language에게 Response로 준다
    5. Backend Language는 받은 결과와 코드를 요청에 따른 맞는 파일로 변경해 서버프로그램에 Response
    6. 서버프로그램은 받은 Response를 Client에게 호환되게 Response한다.
    (서버가 인터넷에서 제공하는 서비스의 종류에 따라 다양한 애플리케이션이 존재)
    • extra
    • 컴퓨터 네트워크쪽으로 설명을 하게 되면 클라이언트가 요청을 보낼 때 Http, mail에 따른 다른 포트번호를 주어서 각각 다른 프로토콜을 사용하게 하여 라우터의 layer계층들과 DNS서버를 통과하면서 패킷이 전달이 되는데 이때 서버에 도달하게 된다. 서버는 요청에 따른 알맞은 응답을 해주는 것인데 이 응답에 정보를 넣어주어 서비스를 처리하게 된다.
  • 출처: https://better-together.tistory.com/60
  • 서버의 구조
    • Server Program
      • 웹서버
        • TCP를 사용, UDP 프로토콜 또한 사용
        • 파일 전송의 경우는 FTP를 주로 사용, 실시간 동영상 시청은 UDP를 주로 사용
        웹 서버 - 위키백과, 우리 모두의 백과사전
      • : HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램
      • nginx
        • 역할
          • 정적 파일을 처리하는 HTTP 서버로서의 역할
          • 응용프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할
      • 러시아 개발자가 동시접속 처리에 특화된 웹 서버 프로그램이며 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.
      • apache
        • 세계에서 가장 많이 쓰는 웹 서버중 하나
        • 구축이 쉽다는 이유 때문에 많이 사용합니다. 단, Apache자체만으로 엄청 무겁고 , Squid와 함께 Slowloris취약점이 발견으로 중소기업이나 프로그래밍 능력이 능숙한 사람이 사용함.
    • Back-end Language
      • java - spring, spring boot가장 큰 특징은 제어의 역전(IOC), 의존성 주입(DI), 관점 지향 프로그래밍(AOP)이 있으며 Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory와 같은 설정을 하는데에 어려움에 있어 스프링부트의 도움을 받는다.Spring을 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 Spring을 활용할 수 있도록 돕는다
      • 스프링부트는 자동설정(AutoConfiguration)을 이용하였고 어플리케이션 개발에 필요한 모든 내부 디펜던시를 관리하며 SpringBoot Starter 사용.
      • 스프링은 JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다
      • javascript - node.js, express: 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 javascript로 만들 수 있도록 해주는 런타임 환경이다Express: 즉 NodeJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체이다.
      • : Express는 Node.js를 위한 빠르고 간편한 웹 프레임워크
      • : 구글의 크롬 V8 자바스크립트 엔진을 기반으로한 비동기 IO 를 지원하는 고성능네트워크 서버인데 단점으로는 실행해봐야 에러를 확인할 수 있으며 싱글스레드인 것이다.
      • Node.js
      • python - django, flask: 웹 개발을 하기 위한 여러가지 서비스들을 이미 갖추고 있다.: MVT(Model-View-Template)구조로 전체 스택개발을 위한 프레임워크입니다.Flask: MVC(Model-View-Controller)구조를 따른다
      • : 경량화 된 웹 프레임워크로 django가 spring에 비교된다면 이것은 spring boot에 비교가 된다.
      • : ORM이 내장하여 다양한 데이터베이스에 유연하게 엑세스할 수 있다.
      • : pytyon 기반 웹 어플리케이션 프레임 워크 중 가장 많이 사용되고 있다
      • Django
    • DB, DBMS
      • SQL: Mysql AB사가 개발했으며 질의 언어 SQL(을 사용하는 개방 소스의 관계형 데이터베이스 관리시스템(RDBMS)으로 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.mssqlORACLE: 대규모 데이터베이스를 지원하고 다른 DBMS보다 대량의 정보 관리를 할 때 가장 좋은 성능을 보여 큰 기업에서 많이 사용한다.
      • : Oracle Corporation이란 기업에서 만든 데이터 베이스 관리 시스템 입니다
      • : 마이크로소프트가 사이베이스를 기반으로 개발한 관계형 데이터베이스다.
      • : 상호 연동이 잘되고 무료 프로그램이라 홈페이지나 쇼핑몰 등 일반적인 웹 개발에 널리 사용되고 있다.
      • Mysql
      • NoSQLMongoDBredis: 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있다.Cassandra: 여러 데이터 센터 및 클라우드에서 대량의 정형, 반정형 및 비정형 데이터를 관리하는 데 적합
      • : 손쉬운 복제와 대량의 정보와 초당 수천 건의 동시 작업을 처리 가능하여 대량의 데이터를 관리 할 수 있다
      • : 대규모로 확장 가능한 분산 NoSQL DB이다
      • : 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 사용
      • : 메모리 기반의 키-값 구조 데이터 관리 시스템으로 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장한다
      • : 문서지향 데이터베이스로, 이것은 객체지향 프로그래밍과 잘 맞고 JSON을 사용할 때 아주 유용
      • : 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미
    • : RDBMS(=SQL)는 보통 관계형 데이터베이스라고 하며 반면 NOSQL은 비관계형 데이터베이스이다
  • APM
    • A(Apache) : 웹서버, P(PHP) : 웹 프로그래밍 언어, M(MYSQL) : 데이터베이스 3가지가 연동되어 운영되도록 만든 환경이다.
    • 출처: https://velog.io/@jiyoonoh-dev/APM이란

    • Extra
    • 또 다르게 Application Performance Management의 약자로 웹 서비스의 동작 상태를 관찰하고 성능을 분석하며, 특히 미들웨어(WebLogic, Tomcat, JBOSS 등)에서 일어나는 트랜잭션의 사용 시간을 분석하여 각 단계별로 성능에 영향을 미치는 원인을 분석할 수 있습니다.
  • 비트나미
  • : 여러가지 어플리케이션 솔루션들을 다양한 환경에 쉽게 설치할 수 있게 패키지를 만들어 배포해주는 회사로 어플리케이션배포도구라고 말할 수 있다.
  • 로컬호스트(localhost)그래서 VScode나 다른 것으로 자신이 개발한 웹사이트를 열 때 url창에 localhost:8080이 아닌 127.0.0.1을 쳐도 된다.
  • : 호스트명으로, 자신의 컴퓨터를 의미하고 IPv4에서의 IP 주소는 127.0.0.1이다.
  • 가상머신(Virtual Machine)
    • 사용이유
      • 다른 운영체제를 사용해야 하는 경우(맥OS에서 윈도우, 윈도우에서 리눅스)
      • 독립된 작업공간이 필요한 경우 (바이러스 회피, 백업)
    • Virtual Box
      • 오라클에서 만든 가상머신 솔루션
      • 오픈소스
      • 무료
    • 리눅스, macOS, 솔라리스, 윈도우를 게스트 운영 체제로 가상화하는 x86 가상화 소프트웨어
    • VMware성능적으로 VMware가 좋다라고 하기도 한다.
    • 유료이다.
    • Virtual Box와 별 차이는 없으며 Vmware는 CPU를 코어/쓰레드 따로 설정할 수 있는데, virtualbox는 코어만 설정할수 있다.
  • 하드웨어를 소프트웨어적으로 구현해서 그 위에서 운영체제가 작동하도록하는 기술로 물리적 컴퓨터처럼 애플리케이션과 운영 체제를 실행.
  • Linux, Ubuntu
    • 리눅스(Linux): 리눅스 탄생하기 이전부터 사용되고 비용에 부담이 있어 개인이 사용하기 부담이 있는 유닉스를 대체하는 것
    • : 다중 사용자, 다중 작업(멀티 태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)로, 여러 사람이 하나의 리눅스 시스템에 접속하여 다수의 프로그램을 동시에 실행할 수 있다.
    • : 컴퓨터 운영체제의 한 종류이자, 커널 자체를 의미하기도 한다.
    • 우분투(Ubuntu)
    • : 데비안(Debian) GNU/리눅스를 기반으로 만들어졌으며 고유한 데스크탑 환경을 사용하는 리눅스 배포판이다. (리눅스의 여러 배포판 중에 하나인 데비안에서 또 한 번 파생된 배포판입니다)
  • 리눅스 명령어
    • ls : 현재 위치의 파일 목록을 조회하는 명령어
    • cd : 디렉토리를 이동하는 명령어
    • touch : 파일의 용량이 0인 파일을 생성, 날짜 변경하는 명령어
    • mkdir : 디렉토리를 생성하는 명령어
    • cp : 파일을 복사하는 명령어
    • mv : 파일을 이동시키는 명령어
    • rm : 파일을 제거하는 명령어
    • cat : 파일의 내용을 화면에 출력하거나 파일을 만드는 명령어
    • redirection : 화면에 출력되는 결과를 파일로 저장하는 명령어
    • alias : 자주 수행하는 명령어들을 쉽게 사용할 수 있도록 설정하는 명령어
    [linux] 리눅스 기본 명령어/자주 쓰는 명령어리눅스 명령어 모음 BEST 50 초보자 및 전문가용 - 도라가이드
  • 02. 꼭 알아야 할 리눅스 기본 명령어 10가지
  • : ls , cd, touch, mkdir, cp, mv, rm , cat, redirection, alias ..등
  • 리눅스 디렉토리 구조
    • 리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있다
    • 디렉토리를 구분하는 '/'는 리눅스에서 사용하고 윈도우는 반대인 '\'를 사용
    • /(루트)
    • : 최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리들의 시작점임
    • /bin
    • : 기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm 등과 같은 명령어들이 이 디렉토리에 존재
    • /boot
    • : GRUB 과 같은 부트로더에 관한 파일들(grub.conf 등)이 이 디렉토리에 존재
    • /dev
    • : 시스템 디바이스(device)파일을 저장하고 있는 디렉토리
    • /etc
    • : 시스템의 거의 모든 설정파일이 존재하는 디렉토리 (시스템제어판용, 사용자 관리설정, DNS설정파일)
    • /etc/mai/
    • : sendmail.cf 나 access 파일등의 sendmail 의 설정파일들이 존재하는 디렉토리.
    • /etc/ssh/
    • : SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리
    • /etc/squid/
    • : squid 프락시서버의 설정파일들이 저장된 디렉토리
    • /etc/skel/
    • : 계정사용자 생성시의 초기화파일들이 저장된 디렉토리
    • /home
    • : 사용자의 홈디렉토리, useradd 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성
    • /lib
    • 커널모듈파일과 라이브러리파일 즉, 커널이 필요로하는 커널모듈파일들과 프로그램(C, C++ 등)에 필요한 각종 라이브러리 파일들이 존재하는 디렉토리.
    • /proc
    • "가상파일시스템" 이라고 하는 곳으로 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳
    • /usr
    • 시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리
    • /var
    • 시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리
    리눅스 디렉토리 구조
  • vi(vim) 편집기 사용법
    • Vim에서
      • 일반모드에서 a i o A I O를 입력하면 입력모드로 전환일반 모드에서 : /를 입력하면 명령모드로 전환 한다.
      • 일반모드를 제외한 모드들에서 일반모드로 전환하고 싶으면 esc를 입력하면 된다.
      • 일반 모드에서 v V를 입력하면 비주얼 모드로 전환
    [리눅스, 유닉스]vi (vim) 편집기 기본 사용법, 명령어, 단축키, 동작법 & 문제

추가 개념 키워드

  • Web Server(WS)와 Web Application Server(WAS)
    • Web Server(WS)특징
    • : 정적컨텐츠(단순 HTML, 문서, CSS, JavaScript, 이미지, 파일)를 제공하는 서버
    • 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고 HTML문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램
    • Web Application Server(WAS)
    • 인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서 주로 동적 서버 컨텐츠를 수행하는 것으로 데이터베이스 서버와 같이 수행된다.
    WAS와 WS은 기능을 분리하여 서버 부하 방지와 보안강화 등의 이점이 있기 떄문에 따로 이용한다.WEB 서버와 WAS 서버의 차이[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS
  • {즉문즉설} WAS와 WS의 차이점은? (feat. Nginx, Node Express, Flask)
  • [Web] 웹 서버와 WAS의 차이를 쉽게 알아보자
  • 운영체제(OS)
    • 운영체제목적은 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축이다.
    • 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임으로 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
    • Window, MacOS
      • Window특징
        • GUI(그래픽 사용자 인터페이스)
        • 선점형 멀티태스킹(Preemptive Multi-Tasking)
        • FAT32 파일 시스템 사용
        • PnP(Plug and Play, 자동감지 기능)사용
        • OLE(Object Linking and Embedding)사용 등..
      • 마이크로소프트사가 개발한 운영체제로 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다.
      • MacOS특징
        • 일관되고 직관적인 UI
        • 별도의 백신 설치 필요 X
        • 시스템의 전체 설정을 담는 레지스트리가 존재 X
      • 애플이 개발한 유닉스 운영 체제이다.
  • CLI와 GUI
    • 인터페이스2가지 시스템 또는 장치가 결합해 있는 경계
    • 서로 다른 사물이나 시스템 간에 커뮤니케이션(소통)이 가능하도록 설계한 상호 작용 방식
    • GUI
    • 그래픽 사용자 인터페이스라는 것으로 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다.
    • CLI작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다
    • 명령 줄 인터페이스로 텍스트 터미널을 통해 사용자와 컴퓨터가 상호작용하는 방식이다.
  • HTTP상태 코드를 제공.
  • 포트번호 80번 사용
  • Hyper Text Transfer Protocol로 인터넷에서 데이터를 주고받을 수 있는 TCP/ IP를 이용하는 응용 프로토콜(규칙)
  • 패키지 설치와 컴파일 설치
    • 패키지 매니저컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다.
      • 역할
        1. 패키지의 dependency 관리
        2. 패키지의 보안관리
        3. 여러 패키지를 기능에 따라 그룹으로 묶어 정리
        4. 패키지 압축 해제
        5. Software repository로부터 패키지를 찾고, 다운로드하고, 설치하고, 업데이트
      Debian계열의 Ubuntu 에서는 apt-get 으로 프로그램 설치, 업데이트, 삭제가 가능.
    • CetnOS, Redhat 에서는 yum 을 이용하면 됩니다.
    • 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴
    • 컴파일 설치보안정책의 이유로 회사에서 업무적인 목적으로 사용한다면,Package manager 사용이 원활하지 않을 수도 있다 이때 컴파일 설치해서 사용.
    • https://zetawiki.com/wiki/컴파일_설치핵심 개념 키워드
      • 서버와 서비스 서버의 역할
        • 요청을 받으면 처리하여 응답하는 존재
        • 어떤 서비스를 제공할지 알아야 하므로 요청을 통해서 알아낸다.
        • 서비스란: 예로써 설명을 하면 강사가 서버라고 하면 강사가 제공하는 강의나 pdf파일등이 서비스라고 할 수 있습니다.
        • : 클라이언트가 요청을 하면 서버에서 어떤 방식으로 수행해야 하는지를 응답으로써 클라이언트에게 주는 것이다.
        • extra
        • 서버는 여러가지 종류로 나뉘어지는데 웹 서버와 데이터 베이스 서버 중간에 위치하는 애플리케이션 서버, 일종의 슈퍼 컴퓨터인 컴퓨팅 서버 등이 있다. 이 서버들로 요청이 들어왔을 때 서비스들을 제공하면서 처리가 된다. 예를 들어 이메일 서비스, 파일 전송 서비스, 원격 제어 서비스, 온라인 게임 서비스, 웹 서비스 등을 제공한다.
      • 클라이언트 - 서버 관계
        • 여러 개의 클라이언트가 서버에 요청을 하게 되면 서버가 응답을 하게 됩니다. 여기서 이 응답을 client에게 전달하면서 client는 해당하는 것을 사용자에게 보여주거나 액션을 취해줍니다.
      • 서버의 동작 방식과 순서(요청이 들어왔을 때 서비스가 어떻게 처리되는가?)
        1. 클라이언트가 서버에 request (파일을 주세요, 로그인..)
        2. 서버 프로그램(서버)이 client에게 알맞는 response를 주기 위해 request에 따른 맞는 파일을 해석할 수 있는 Backend Language에게 찾아달라고 서버프로그램이 request.
        3. Backend Language는 파일을 해석하여 DB에 query를 날린다.
        4. DB는 query에 대한 결과를 Backend Language에게 Response로 준다
        5. Backend Language는 받은 결과와 코드를 요청에 따른 맞는 파일로 변경해 서버프로그램에 Response
        6. 서버프로그램은 받은 Response를 Client에게 호환되게 Response한다.
        (서버가 인터넷에서 제공하는 서비스의 종류에 따라 다양한 애플리케이션이 존재)
        • extra
        • 컴퓨터 네트워크쪽으로 설명을 하게 되면 클라이언트가 요청을 보낼 때 Http, mail에 따른 다른 포트번호를 주어서 각각 다른 프로토콜을 사용하게 하여 라우터의 layer계층들과 DNS서버를 통과하면서 패킷이 전달이 되는데 이때 서버에 도달하게 된다. 서버는 요청에 따른 알맞은 응답을 해주는 것인데 이 응답에 정보를 넣어주어 서비스를 처리하게 된다.
      • 출처: https://better-together.tistory.com/60
      • 서버의 구조
        • Server Program
          • 웹서버
            • TCP를 사용, UDP 프로토콜 또한 사용
            • 파일 전송의 경우는 FTP를 주로 사용, 실시간 동영상 시청은 UDP를 주로 사용
            웹 서버 - 위키백과, 우리 모두의 백과사전
          • : HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램
          • nginx
            • 역할
              • 정적 파일을 처리하는 HTTP 서버로서의 역할
              • 응용프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할
          • 러시아 개발자가 동시접속 처리에 특화된 웹 서버 프로그램이며 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.
          • apache
            • 세계에서 가장 많이 쓰는 웹 서버중 하나
            • 구축이 쉽다는 이유 때문에 많이 사용합니다. 단, Apache자체만으로 엄청 무겁고 , Squid와 함께 Slowloris취약점이 발견으로 중소기업이나 프로그래밍 능력이 능숙한 사람이 사용함.
        • Back-end Language
          • java - spring, spring boot가장 큰 특징은 제어의 역전(IOC), 의존성 주입(DI), 관점 지향 프로그래밍(AOP)이 있으며 Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory와 같은 설정을 하는데에 어려움에 있어 스프링부트의 도움을 받는다.Spring을 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 Spring을 활용할 수 있도록 돕는다
          • 스프링부트는 자동설정(AutoConfiguration)을 이용하였고 어플리케이션 개발에 필요한 모든 내부 디펜던시를 관리하며 SpringBoot Starter 사용.
          • 스프링은 JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다
          • javascript - node.js, express: 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 javascript로 만들 수 있도록 해주는 런타임 환경이다Express: 즉 NodeJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체이다.
          • : Express는 Node.js를 위한 빠르고 간편한 웹 프레임워크
          • : 구글의 크롬 V8 자바스크립트 엔진을 기반으로한 비동기 IO 를 지원하는 고성능네트워크 서버인데 단점으로는 실행해봐야 에러를 확인할 수 있으며 싱글스레드인 것이다.
          • Node.js
          • python - django, flask: 웹 개발을 하기 위한 여러가지 서비스들을 이미 갖추고 있다.: MVT(Model-View-Template)구조로 전체 스택개발을 위한 프레임워크입니다.Flask: MVC(Model-View-Controller)구조를 따른다
          • : 경량화 된 웹 프레임워크로 django가 spring에 비교된다면 이것은 spring boot에 비교가 된다.
          • : ORM이 내장하여 다양한 데이터베이스에 유연하게 엑세스할 수 있다.
          • : pytyon 기반 웹 어플리케이션 프레임 워크 중 가장 많이 사용되고 있다
          • Django
        • DB, DBMS
          • SQL: Mysql AB사가 개발했으며 질의 언어 SQL(을 사용하는 개방 소스의 관계형 데이터베이스 관리시스템(RDBMS)으로 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.mssqlORACLE: 대규모 데이터베이스를 지원하고 다른 DBMS보다 대량의 정보 관리를 할 때 가장 좋은 성능을 보여 큰 기업에서 많이 사용한다.
          • : Oracle Corporation이란 기업에서 만든 데이터 베이스 관리 시스템 입니다
          • : 마이크로소프트가 사이베이스를 기반으로 개발한 관계형 데이터베이스다.
          • : 상호 연동이 잘되고 무료 프로그램이라 홈페이지나 쇼핑몰 등 일반적인 웹 개발에 널리 사용되고 있다.
          • Mysql
          • NoSQLMongoDBredis: 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있다.Cassandra: 여러 데이터 센터 및 클라우드에서 대량의 정형, 반정형 및 비정형 데이터를 관리하는 데 적합
          • : 손쉬운 복제와 대량의 정보와 초당 수천 건의 동시 작업을 처리 가능하여 대량의 데이터를 관리 할 수 있다
          • : 대규모로 확장 가능한 분산 NoSQL DB이다
          • : 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 사용
          • : 메모리 기반의 키-값 구조 데이터 관리 시스템으로 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장한다
          • : 문서지향 데이터베이스로, 이것은 객체지향 프로그래밍과 잘 맞고 JSON을 사용할 때 아주 유용
          • : 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미
        • : RDBMS(=SQL)는 보통 관계형 데이터베이스라고 하며 반면 NOSQL은 비관계형 데이터베이스이다
      • APM
        • A(Apache) : 웹서버, P(PHP) : 웹 프로그래밍 언어, M(MYSQL) : 데이터베이스 3가지가 연동되어 운영되도록 만든 환경이다.
        • 출처: https://velog.io/@jiyoonoh-dev/APM이란
        • Extra
        • 또 다르게 Application Performance Management의 약자로 웹 서비스의 동작 상태를 관찰하고 성능을 분석하며, 특히 미들웨어(WebLogic, Tomcat, JBOSS 등)에서 일어나는 트랜잭션의 사용 시간을 분석하여 각 단계별로 성능에 영향을 미치는 원인을 분석할 수 있습니다.
      • 비트나미
      • : 여러가지 어플리케이션 솔루션들을 다양한 환경에 쉽게 설치할 수 있게 패키지를 만들어 배포해주는 회사로 어플리케이션배포도구라고 말할 수 있다.
      • 로컬호스트(localhost)그래서 VScode나 다른 것으로 자신이 개발한 웹사이트를 열 때 url창에 localhost:8080이 아닌 127.0.0.1을 쳐도 된다.
      • : 호스트명으로, 자신의 컴퓨터를 의미하고 IPv4에서의 IP 주소는 127.0.0.1이다.
      • 가상머신(Virtual Machine)
        • 사용이유
          • 다른 운영체제를 사용해야 하는 경우(맥OS에서 윈도우, 윈도우에서 리눅스)
          • 독립된 작업공간이 필요한 경우 (바이러스 회피, 백업)
        • Virtual Box
          • 오라클에서 만든 가상머신 솔루션
          • 오픈소스
          • 무료
        • 리눅스, macOS, 솔라리스, 윈도우를 게스트 운영 체제로 가상화하는 x86 가상화 소프트웨어
        • VMware성능적으로 VMware가 좋다라고 하기도 한다.
        • 유료이다.
        • Virtual Box와 별 차이는 없으며 Vmware는 CPU를 코어/쓰레드 따로 설정할 수 있는데, virtualbox는 코어만 설정할수 있다.
      • 하드웨어를 소프트웨어적으로 구현해서 그 위에서 운영체제가 작동하도록하는 기술로 물리적 컴퓨터처럼 애플리케이션과 운영 체제를 실행.
      • Linux, Ubuntu
        • 리눅스(Linux): 리눅스 탄생하기 이전부터 사용되고 비용에 부담이 있어 개인이 사용하기 부담이 있는 유닉스를 대체하는 것
        • : 다중 사용자, 다중 작업(멀티 태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)로, 여러 사람이 하나의 리눅스 시스템에 접속하여 다수의 프로그램을 동시에 실행할 수 있다.
        • : 컴퓨터 운영체제의 한 종류이자, 커널 자체를 의미하기도 한다.
        • 우분투(Ubuntu)
        • : 데비안(Debian) GNU/리눅스를 기반으로 만들어졌으며 고유한 데스크탑 환경을 사용하는 리눅스 배포판이다. (리눅스의 여러 배포판 중에 하나인 데비안에서 또 한 번 파생된 배포판입니다)
      • 리눅스 명령어
        • ls : 현재 위치의 파일 목록을 조회하는 명령어
        • cd : 디렉토리를 이동하는 명령어
        • touch : 파일의 용량이 0인 파일을 생성, 날짜 변경하는 명령어
        • mkdir : 디렉토리를 생성하는 명령어
        • cp : 파일을 복사하는 명령어
        • mv : 파일을 이동시키는 명령어
        • rm : 파일을 제거하는 명령어
        • cat : 파일의 내용을 화면에 출력하거나 파일을 만드는 명령어
        • redirection : 화면에 출력되는 결과를 파일로 저장하는 명령어
        • alias : 자주 수행하는 명령어들을 쉽게 사용할 수 있도록 설정하는 명령어
        [linux] 리눅스 기본 명령어/자주 쓰는 명령어리눅스 명령어 모음 BEST 50 초보자 및 전문가용 - 도라가이드
      • 02. 꼭 알아야 할 리눅스 기본 명령어 10가지
      • : ls , cd, touch, mkdir, cp, mv, rm , cat, redirection, alias ..등
      • 리눅스 디렉토리 구조
        • 리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있다
        • 디렉토리를 구분하는 '/'는 리눅스에서 사용하고 윈도우는 반대인 '\'를 사용
        • /(루트)
        • : 최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리들의 시작점임
        • /bin
        • : 기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm 등과 같은 명령어들이 이 디렉토리에 존재
        • /boot
        • : GRUB 과 같은 부트로더에 관한 파일들(grub.conf 등)이 이 디렉토리에 존재
        • /dev
        • : 시스템 디바이스(device)파일을 저장하고 있는 디렉토리
        • /etc
        • : 시스템의 거의 모든 설정파일이 존재하는 디렉토리 (시스템제어판용, 사용자 관리설정, DNS설정파일)
        • /etc/mai/
        • : sendmail.cf 나 access 파일등의 sendmail 의 설정파일들이 존재하는 디렉토리.
        • /etc/ssh/
        • : SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리
        • /etc/squid/
        • : squid 프락시서버의 설정파일들이 저장된 디렉토리
        • /etc/skel/
        • : 계정사용자 생성시의 초기화파일들이 저장된 디렉토리
        • /home
        • : 사용자의 홈디렉토리, useradd 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성
        • /lib
        • 커널모듈파일과 라이브러리파일 즉, 커널이 필요로하는 커널모듈파일들과 프로그램(C, C++ 등)에 필요한 각종 라이브러리 파일들이 존재하는 디렉토리.
        • /proc
        • "가상파일시스템" 이라고 하는 곳으로 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳
        • /usr
        • 시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리
        • /var
        • 시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리
        리눅스 디렉토리 구조
      • vi(vim) 편집기 사용법
        • Vim에서
          • 일반모드에서 a i o A I O를 입력하면 입력모드로 전환일반 모드에서 : /를 입력하면 명령모드로 전환 한다.
          • 일반모드를 제외한 모드들에서 일반모드로 전환하고 싶으면 esc를 입력하면 된다.
          • 일반 모드에서 v V를 입력하면 비주얼 모드로 전환
        [리눅스, 유닉스]vi (vim) 편집기 기본 사용법, 명령어, 단축키, 동작법 & 문제
      추가 개념 키워드
      • Web Server(WS)와 Web Application Server(WAS)
        • Web Server(WS)특징
        • : 정적컨텐츠(단순 HTML, 문서, CSS, JavaScript, 이미지, 파일)를 제공하는 서버
        • 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고 HTML문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램
        • Web Application Server(WAS)
        • 인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서 주로 동적 서버 컨텐츠를 수행하는 것으로 데이터베이스 서버와 같이 수행된다.
        WAS와 WS은 기능을 분리하여 서버 부하 방지와 보안강화 등의 이점이 있기 떄문에 따로 이용한다.WEB 서버와 WAS 서버의 차이[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS
      • {즉문즉설} WAS와 WS의 차이점은? (feat. Nginx, Node Express, Flask)
      • [Web] 웹 서버와 WAS의 차이를 쉽게 알아보자
      • 운영체제(OS)
        • 운영체제목적은 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축이다.
        • 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임으로 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
        • Window, MacOS
          • Window특징
            • GUI(그래픽 사용자 인터페이스)
            • 선점형 멀티태스킹(Preemptive Multi-Tasking)
            • FAT32 파일 시스템 사용
            • PnP(Plug and Play, 자동감지 기능)사용
            • OLE(Object Linking and Embedding)사용 등..
          • 마이크로소프트사가 개발한 운영체제로 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다.
          • MacOS특징
            • 일관되고 직관적인 UI
            • 별도의 백신 설치 필요 X
            • 시스템의 전체 설정을 담는 레지스트리가 존재 X
          • 애플이 개발한 유닉스 운영 체제이다.
      • CLI와 GUI
        • 인터페이스2가지 시스템 또는 장치가 결합해 있는 경계
        • 서로 다른 사물이나 시스템 간에 커뮤니케이션(소통)이 가능하도록 설계한 상호 작용 방식
        • GUI
        • 그래픽 사용자 인터페이스라는 것으로 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다.
        • CLI작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다
        • 명령 줄 인터페이스로 텍스트 터미널을 통해 사용자와 컴퓨터가 상호작용하는 방식이다.
      • HTTP상태 코드를 제공.
      • 포트번호 80번 사용
      • Hyper Text Transfer Protocol로 인터넷에서 데이터를 주고받을 수 있는 TCP/ IP를 이용하는 응용 프로토콜(규칙)
      • 패키지 설치와 컴파일 설치
        • 패키지 매니저컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다.
          • 역할
            1. 패키지의 dependency 관리
            2. 패키지의 보안관리
            3. 여러 패키지를 기능에 따라 그룹으로 묶어 정리
            4. 패키지 압축 해제
            5. Software repository로부터 패키지를 찾고, 다운로드하고, 설치하고, 업데이트
          Debian계열의 Ubuntu 에서는 apt-get 으로 프로그램 설치, 업데이트, 삭제가 가능.
        • CetnOS, Redhat 에서는 yum 을 이용하면 됩니다.
        • 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴
        • 컴파일 설치보안정책의 이유로 회사에서 업무적인 목적으로 사용한다면,Package manager 사용이 원활하지 않을 수도 있다 이때 컴파일 설치해서 사용.
        • https://zetawiki.com/wiki/컴파일_설치핵심 개념 키워드
          • 서버와 서비스 서버의 역할
            • 요청을 받으면 처리하여 응답하는 존재
            • 어떤 서비스를 제공할지 알아야 하므로 요청을 통해서 알아낸다.
            • 서비스란: 예로써 설명을 하면 강사가 서버라고 하면 강사가 제공하는 강의나 pdf파일등이 서비스라고 할 수 있습니다.
            • : 클라이언트가 요청을 하면 서버에서 어떤 방식으로 수행해야 하는지를 응답으로써 클라이언트에게 주는 것이다.
            • extra
            • 서버는 여러가지 종류로 나뉘어지는데 웹 서버와 데이터 베이스 서버 중간에 위치하는 애플리케이션 서버, 일종의 슈퍼 컴퓨터인 컴퓨팅 서버 등이 있다. 이 서버들로 요청이 들어왔을 때 서비스들을 제공하면서 처리가 된다. 예를 들어 이메일 서비스, 파일 전송 서비스, 원격 제어 서비스, 온라인 게임 서비스, 웹 서비스 등을 제공한다.
          • 클라이언트 - 서버 관계
            • 여러 개의 클라이언트가 서버에 요청을 하게 되면 서버가 응답을 하게 됩니다. 여기서 이 응답을 client에게 전달하면서 client는 해당하는 것을 사용자에게 보여주거나 액션을 취해줍니다.
          • 서버의 동작 방식과 순서(요청이 들어왔을 때 서비스가 어떻게 처리되는가?)
            1. 클라이언트가 서버에 request (파일을 주세요, 로그인..)
            2. 서버 프로그램(서버)이 client에게 알맞는 response를 주기 위해 request에 따른 맞는 파일을 해석할 수 있는 Backend Language에게 찾아달라고 서버프로그램이 request.
            3. Backend Language는 파일을 해석하여 DB에 query를 날린다.
            4. DB는 query에 대한 결과를 Backend Language에게 Response로 준다
            5. Backend Language는 받은 결과와 코드를 요청에 따른 맞는 파일로 변경해 서버프로그램에 Response
            6. 서버프로그램은 받은 Response를 Client에게 호환되게 Response한다.
            (서버가 인터넷에서 제공하는 서비스의 종류에 따라 다양한 애플리케이션이 존재)
            • extra
            • 컴퓨터 네트워크쪽으로 설명을 하게 되면 클라이언트가 요청을 보낼 때 Http, mail에 따른 다른 포트번호를 주어서 각각 다른 프로토콜을 사용하게 하여 라우터의 layer계층들과 DNS서버를 통과하면서 패킷이 전달이 되는데 이때 서버에 도달하게 된다. 서버는 요청에 따른 알맞은 응답을 해주는 것인데 이 응답에 정보를 넣어주어 서비스를 처리하게 된다.
          • 출처: https://better-together.tistory.com/60
          • 서버의 구조
            • Server Program
              • 웹서버
                • TCP를 사용, UDP 프로토콜 또한 사용
                • 파일 전송의 경우는 FTP를 주로 사용, 실시간 동영상 시청은 UDP를 주로 사용
                웹 서버 - 위키백과, 우리 모두의 백과사전
              • : HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램
              • nginx
                • 역할
                  • 정적 파일을 처리하는 HTTP 서버로서의 역할
                  • 응용프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할
              • 러시아 개발자가 동시접속 처리에 특화된 웹 서버 프로그램이며 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.
              • apache
                • 세계에서 가장 많이 쓰는 웹 서버중 하나
                • 구축이 쉽다는 이유 때문에 많이 사용합니다. 단, Apache자체만으로 엄청 무겁고 , Squid와 함께 Slowloris취약점이 발견으로 중소기업이나 프로그래밍 능력이 능숙한 사람이 사용함.
            • Back-end Language
              • java - spring, spring boot가장 큰 특징은 제어의 역전(IOC), 의존성 주입(DI), 관점 지향 프로그래밍(AOP)이 있으며 Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory와 같은 설정을 하는데에 어려움에 있어 스프링부트의 도움을 받는다.Spring을 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 Spring을 활용할 수 있도록 돕는다
              • 스프링부트는 자동설정(AutoConfiguration)을 이용하였고 어플리케이션 개발에 필요한 모든 내부 디펜던시를 관리하며 SpringBoot Starter 사용.
              • 스프링은 JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다
              • javascript - node.js, express: 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 javascript로 만들 수 있도록 해주는 런타임 환경이다Express: 즉 NodeJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체이다.
              • : Express는 Node.js를 위한 빠르고 간편한 웹 프레임워크
              • : 구글의 크롬 V8 자바스크립트 엔진을 기반으로한 비동기 IO 를 지원하는 고성능네트워크 서버인데 단점으로는 실행해봐야 에러를 확인할 수 있으며 싱글스레드인 것이다.
              • Node.js
              • python - django, flask: 웹 개발을 하기 위한 여러가지 서비스들을 이미 갖추고 있다.: MVT(Model-View-Template)구조로 전체 스택개발을 위한 프레임워크입니다.Flask: MVC(Model-View-Controller)구조를 따른다
              • : 경량화 된 웹 프레임워크로 django가 spring에 비교된다면 이것은 spring boot에 비교가 된다.
              • : ORM이 내장하여 다양한 데이터베이스에 유연하게 엑세스할 수 있다.
              • : pytyon 기반 웹 어플리케이션 프레임 워크 중 가장 많이 사용되고 있다
              • Django
            • DB, DBMS
              • SQL: Mysql AB사가 개발했으며 질의 언어 SQL(을 사용하는 개방 소스의 관계형 데이터베이스 관리시스템(RDBMS)으로 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.mssqlORACLE: 대규모 데이터베이스를 지원하고 다른 DBMS보다 대량의 정보 관리를 할 때 가장 좋은 성능을 보여 큰 기업에서 많이 사용한다.
              • : Oracle Corporation이란 기업에서 만든 데이터 베이스 관리 시스템 입니다
              • : 마이크로소프트가 사이베이스를 기반으로 개발한 관계형 데이터베이스다.
              • : 상호 연동이 잘되고 무료 프로그램이라 홈페이지나 쇼핑몰 등 일반적인 웹 개발에 널리 사용되고 있다.
              • Mysql
              • NoSQLMongoDBredis: 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있다.Cassandra: 여러 데이터 센터 및 클라우드에서 대량의 정형, 반정형 및 비정형 데이터를 관리하는 데 적합
              • : 손쉬운 복제와 대량의 정보와 초당 수천 건의 동시 작업을 처리 가능하여 대량의 데이터를 관리 할 수 있다
              • : 대규모로 확장 가능한 분산 NoSQL DB이다
              • : 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 사용
              • : 메모리 기반의 키-값 구조 데이터 관리 시스템으로 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장한다
              • : 문서지향 데이터베이스로, 이것은 객체지향 프로그래밍과 잘 맞고 JSON을 사용할 때 아주 유용
              • : 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미
            • : RDBMS(=SQL)는 보통 관계형 데이터베이스라고 하며 반면 NOSQL은 비관계형 데이터베이스이다
          • APM
            • A(Apache) : 웹서버, P(PHP) : 웹 프로그래밍 언어, M(MYSQL) : 데이터베이스 3가지가 연동되어 운영되도록 만든 환경이다.
            • 출처: https://velog.io/@jiyoonoh-dev/APM이란
            • Extra
            • 또 다르게 Application Performance Management의 약자로 웹 서비스의 동작 상태를 관찰하고 성능을 분석하며, 특히 미들웨어(WebLogic, Tomcat, JBOSS 등)에서 일어나는 트랜잭션의 사용 시간을 분석하여 각 단계별로 성능에 영향을 미치는 원인을 분석할 수 있습니다.
          • 비트나미
          • : 여러가지 어플리케이션 솔루션들을 다양한 환경에 쉽게 설치할 수 있게 패키지를 만들어 배포해주는 회사로 어플리케이션배포도구라고 말할 수 있다.
          • 로컬호스트(localhost)그래서 VScode나 다른 것으로 자신이 개발한 웹사이트를 열 때 url창에 localhost:8080이 아닌 127.0.0.1을 쳐도 된다.
          • : 호스트명으로, 자신의 컴퓨터를 의미하고 IPv4에서의 IP 주소는 127.0.0.1이다.
          • 가상머신(Virtual Machine)
            • 사용이유
              • 다른 운영체제를 사용해야 하는 경우(맥OS에서 윈도우, 윈도우에서 리눅스)
              • 독립된 작업공간이 필요한 경우 (바이러스 회피, 백업)
            • Virtual Box
              • 오라클에서 만든 가상머신 솔루션
              • 오픈소스
              • 무료
            • 리눅스, macOS, 솔라리스, 윈도우를 게스트 운영 체제로 가상화하는 x86 가상화 소프트웨어
            • VMware성능적으로 VMware가 좋다라고 하기도 한다.
            • 유료이다.
            • Virtual Box와 별 차이는 없으며 Vmware는 CPU를 코어/쓰레드 따로 설정할 수 있는데, virtualbox는 코어만 설정할수 있다.
          • 하드웨어를 소프트웨어적으로 구현해서 그 위에서 운영체제가 작동하도록하는 기술로 물리적 컴퓨터처럼 애플리케이션과 운영 체제를 실행.
          • Linux, Ubuntu
            • 리눅스(Linux): 리눅스 탄생하기 이전부터 사용되고 비용에 부담이 있어 개인이 사용하기 부담이 있는 유닉스를 대체하는 것
            • : 다중 사용자, 다중 작업(멀티 태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)로, 여러 사람이 하나의 리눅스 시스템에 접속하여 다수의 프로그램을 동시에 실행할 수 있다.
            • : 컴퓨터 운영체제의 한 종류이자, 커널 자체를 의미하기도 한다.
            • 우분투(Ubuntu)
            • : 데비안(Debian) GNU/리눅스를 기반으로 만들어졌으며 고유한 데스크탑 환경을 사용하는 리눅스 배포판이다. (리눅스의 여러 배포판 중에 하나인 데비안에서 또 한 번 파생된 배포판입니다)
          • 리눅스 명령어
            • ls : 현재 위치의 파일 목록을 조회하는 명령어
            • cd : 디렉토리를 이동하는 명령어
            • touch : 파일의 용량이 0인 파일을 생성, 날짜 변경하는 명령어
            • mkdir : 디렉토리를 생성하는 명령어
            • cp : 파일을 복사하는 명령어
            • mv : 파일을 이동시키는 명령어
            • rm : 파일을 제거하는 명령어
            • cat : 파일의 내용을 화면에 출력하거나 파일을 만드는 명령어
            • redirection : 화면에 출력되는 결과를 파일로 저장하는 명령어
            • alias : 자주 수행하는 명령어들을 쉽게 사용할 수 있도록 설정하는 명령어
            [linux] 리눅스 기본 명령어/자주 쓰는 명령어리눅스 명령어 모음 BEST 50 초보자 및 전문가용 - 도라가이드
          • 02. 꼭 알아야 할 리눅스 기본 명령어 10가지
          • : ls , cd, touch, mkdir, cp, mv, rm , cat, redirection, alias ..등
          • 리눅스 디렉토리 구조
            • 리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있다
            • 디렉토리를 구분하는 '/'는 리눅스에서 사용하고 윈도우는 반대인 '\'를 사용
            • /(루트)
            • : 최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리들의 시작점임
            • /bin
            • : 기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm 등과 같은 명령어들이 이 디렉토리에 존재
            • /boot
            • : GRUB 과 같은 부트로더에 관한 파일들(grub.conf 등)이 이 디렉토리에 존재
            • /dev
            • : 시스템 디바이스(device)파일을 저장하고 있는 디렉토리
            • /etc
            • : 시스템의 거의 모든 설정파일이 존재하는 디렉토리 (시스템제어판용, 사용자 관리설정, DNS설정파일)
            • /etc/mai/
            • : sendmail.cf 나 access 파일등의 sendmail 의 설정파일들이 존재하는 디렉토리.
            • /etc/ssh/
            • : SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리
            • /etc/squid/
            • : squid 프락시서버의 설정파일들이 저장된 디렉토리
            • /etc/skel/
            • : 계정사용자 생성시의 초기화파일들이 저장된 디렉토리
            • /home
            • : 사용자의 홈디렉토리, useradd 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성
            • /lib
            • 커널모듈파일과 라이브러리파일 즉, 커널이 필요로하는 커널모듈파일들과 프로그램(C, C++ 등)에 필요한 각종 라이브러리 파일들이 존재하는 디렉토리.
            • /proc
            • "가상파일시스템" 이라고 하는 곳으로 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳
            • /usr
            • 시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리
            • /var
            • 시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리
            리눅스 디렉토리 구조
          • vi(vim) 편집기 사용법
            • Vim에서
              • 일반모드에서 a i o A I O를 입력하면 입력모드로 전환일반 모드에서 : /를 입력하면 명령모드로 전환 한다.
              • 일반모드를 제외한 모드들에서 일반모드로 전환하고 싶으면 esc를 입력하면 된다.
              • 일반 모드에서 v V를 입력하면 비주얼 모드로 전환
            [리눅스, 유닉스]vi (vim) 편집기 기본 사용법, 명령어, 단축키, 동작법 & 문제
          추가 개념 키워드
          • Web Server(WS)와 Web Application Server(WAS)
            • Web Server(WS)특징
            • : 정적컨텐츠(단순 HTML, 문서, CSS, JavaScript, 이미지, 파일)를 제공하는 서버
            • 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고 HTML문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램
            • Web Application Server(WAS)
            • 인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서 주로 동적 서버 컨텐츠를 수행하는 것으로 데이터베이스 서버와 같이 수행된다.
            WAS와 WS은 기능을 분리하여 서버 부하 방지와 보안강화 등의 이점이 있기 떄문에 따로 이용한다.WEB 서버와 WAS 서버의 차이[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS
          • {즉문즉설} WAS와 WS의 차이점은? (feat. Nginx, Node Express, Flask)
          • [Web] 웹 서버와 WAS의 차이를 쉽게 알아보자
          • 운영체제(OS)
            • 운영체제목적은 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축이다.
            • 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임으로 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
            • Window, MacOS
              • Window특징
                • GUI(그래픽 사용자 인터페이스)
                • 선점형 멀티태스킹(Preemptive Multi-Tasking)
                • FAT32 파일 시스템 사용
                • PnP(Plug and Play, 자동감지 기능)사용
                • OLE(Object Linking and Embedding)사용 등..
              • 마이크로소프트사가 개발한 운영체제로 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다.
              • MacOS특징
                • 일관되고 직관적인 UI
                • 별도의 백신 설치 필요 X
                • 시스템의 전체 설정을 담는 레지스트리가 존재 X
              • 애플이 개발한 유닉스 운영 체제이다.
          • CLI와 GUI
            • 인터페이스2가지 시스템 또는 장치가 결합해 있는 경계
            • 서로 다른 사물이나 시스템 간에 커뮤니케이션(소통)이 가능하도록 설계한 상호 작용 방식
            • GUI
            • 그래픽 사용자 인터페이스라는 것으로 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다.
            • CLI작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다
            • 명령 줄 인터페이스로 텍스트 터미널을 통해 사용자와 컴퓨터가 상호작용하는 방식이다.
          • HTTP상태 코드를 제공.
          • 포트번호 80번 사용
          • Hyper Text Transfer Protocol로 인터넷에서 데이터를 주고받을 수 있는 TCP/ IP를 이용하는 응용 프로토콜(규칙)
          • 패키지 설치와 컴파일 설치
            • 패키지 매니저컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다.
              • 역할
                1. 패키지의 dependency 관리
                2. 패키지의 보안관리
                3. 여러 패키지를 기능에 따라 그룹으로 묶어 정리
                4. 패키지 압축 해제
                5. Software repository로부터 패키지를 찾고, 다운로드하고, 설치하고, 업데이트
              Debian계열의 Ubuntu 에서는 apt-get 으로 프로그램 설치, 업데이트, 삭제가 가능.
            • CetnOS, Redhat 에서는 yum 을 이용하면 됩니다.
            • 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴
            • 컴파일 설치보안정책의 이유로 회사에서 업무적인 목적으로 사용한다면,Package manager 사용이 원활하지 않을 수도 있다 이때 컴파일 설치해서 사용.
            • https://zetawiki.com/wiki/컴파일_설치핵심 개념 키워드
              • 서버와 서비스 서버의 역할
                • 요청을 받으면 처리하여 응답하는 존재
                • 어떤 서비스를 제공할지 알아야 하므로 요청을 통해서 알아낸다.
                • 서비스란: 예로써 설명을 하면 강사가 서버라고 하면 강사가 제공하는 강의나 pdf파일등이 서비스라고 할 수 있습니다.
                • : 클라이언트가 요청을 하면 서버에서 어떤 방식으로 수행해야 하는지를 응답으로써 클라이언트에게 주는 것이다.
                • extra
                • 서버는 여러가지 종류로 나뉘어지는데 웹 서버와 데이터 베이스 서버 중간에 위치하는 애플리케이션 서버, 일종의 슈퍼 컴퓨터인 컴퓨팅 서버 등이 있다. 이 서버들로 요청이 들어왔을 때 서비스들을 제공하면서 처리가 된다. 예를 들어 이메일 서비스, 파일 전송 서비스, 원격 제어 서비스, 온라인 게임 서비스, 웹 서비스 등을 제공한다.
              • 클라이언트 - 서버 관계
                • 여러 개의 클라이언트가 서버에 요청을 하게 되면 서버가 응답을 하게 됩니다. 여기서 이 응답을 client에게 전달하면서 client는 해당하는 것을 사용자에게 보여주거나 액션을 취해줍니다.
              • 서버의 동작 방식과 순서(요청이 들어왔을 때 서비스가 어떻게 처리되는가?)
                1. 클라이언트가 서버에 request (파일을 주세요, 로그인..)
                2. 서버 프로그램(서버)이 client에게 알맞는 response를 주기 위해 request에 따른 맞는 파일을 해석할 수 있는 Backend Language에게 찾아달라고 서버프로그램이 request.
                3. Backend Language는 파일을 해석하여 DB에 query를 날린다.
                4. DB는 query에 대한 결과를 Backend Language에게 Response로 준다
                5. Backend Language는 받은 결과와 코드를 요청에 따른 맞는 파일로 변경해 서버프로그램에 Response
                6. 서버프로그램은 받은 Response를 Client에게 호환되게 Response한다.
                (서버가 인터넷에서 제공하는 서비스의 종류에 따라 다양한 애플리케이션이 존재)
                • extra
                • 컴퓨터 네트워크쪽으로 설명을 하게 되면 클라이언트가 요청을 보낼 때 Http, mail에 따른 다른 포트번호를 주어서 각각 다른 프로토콜을 사용하게 하여 라우터의 layer계층들과 DNS서버를 통과하면서 패킷이 전달이 되는데 이때 서버에 도달하게 된다. 서버는 요청에 따른 알맞은 응답을 해주는 것인데 이 응답에 정보를 넣어주어 서비스를 처리하게 된다.
              • 출처: https://better-together.tistory.com/60
              • 서버의 구조
                • Server Program
                  • 웹서버
                    • TCP를 사용, UDP 프로토콜 또한 사용
                    • 파일 전송의 경우는 FTP를 주로 사용, 실시간 동영상 시청은 UDP를 주로 사용
                    웹 서버 - 위키백과, 우리 모두의 백과사전
                  • : HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램
                  • nginx
                    • 역할
                      • 정적 파일을 처리하는 HTTP 서버로서의 역할
                      • 응용프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할
                  • 러시아 개발자가 동시접속 처리에 특화된 웹 서버 프로그램이며 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.
                  • apache
                    • 세계에서 가장 많이 쓰는 웹 서버중 하나
                    • 구축이 쉽다는 이유 때문에 많이 사용합니다. 단, Apache자체만으로 엄청 무겁고 , Squid와 함께 Slowloris취약점이 발견으로 중소기업이나 프로그래밍 능력이 능숙한 사람이 사용함.
                • Back-end Language
                  • java - spring, spring boot가장 큰 특징은 제어의 역전(IOC), 의존성 주입(DI), 관점 지향 프로그래밍(AOP)이 있으며 Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory와 같은 설정을 하는데에 어려움에 있어 스프링부트의 도움을 받는다.Spring을 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 Spring을 활용할 수 있도록 돕는다
                  • 스프링부트는 자동설정(AutoConfiguration)을 이용하였고 어플리케이션 개발에 필요한 모든 내부 디펜던시를 관리하며 SpringBoot Starter 사용.
                  • 스프링은 JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다
                  • javascript - node.js, express: 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 javascript로 만들 수 있도록 해주는 런타임 환경이다Express: 즉 NodeJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체이다.
                  • : Express는 Node.js를 위한 빠르고 간편한 웹 프레임워크
                  • : 구글의 크롬 V8 자바스크립트 엔진을 기반으로한 비동기 IO 를 지원하는 고성능네트워크 서버인데 단점으로는 실행해봐야 에러를 확인할 수 있으며 싱글스레드인 것이다.
                  • Node.js
                  • python - django, flask: 웹 개발을 하기 위한 여러가지 서비스들을 이미 갖추고 있다.: MVT(Model-View-Template)구조로 전체 스택개발을 위한 프레임워크입니다.Flask: MVC(Model-View-Controller)구조를 따른다
                  • : 경량화 된 웹 프레임워크로 django가 spring에 비교된다면 이것은 spring boot에 비교가 된다.
                  • : ORM이 내장하여 다양한 데이터베이스에 유연하게 엑세스할 수 있다.
                  • : pytyon 기반 웹 어플리케이션 프레임 워크 중 가장 많이 사용되고 있다
                  • Django
                • DB, DBMS
                  • SQL: Mysql AB사가 개발했으며 질의 언어 SQL(을 사용하는 개방 소스의 관계형 데이터베이스 관리시스템(RDBMS)으로 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.mssqlORACLE: 대규모 데이터베이스를 지원하고 다른 DBMS보다 대량의 정보 관리를 할 때 가장 좋은 성능을 보여 큰 기업에서 많이 사용한다.
                  • : Oracle Corporation이란 기업에서 만든 데이터 베이스 관리 시스템 입니다
                  • : 마이크로소프트가 사이베이스를 기반으로 개발한 관계형 데이터베이스다.
                  • : 상호 연동이 잘되고 무료 프로그램이라 홈페이지나 쇼핑몰 등 일반적인 웹 개발에 널리 사용되고 있다.
                  • Mysql
                  • NoSQLMongoDBredis: 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있다.Cassandra: 여러 데이터 센터 및 클라우드에서 대량의 정형, 반정형 및 비정형 데이터를 관리하는 데 적합
                  • : 손쉬운 복제와 대량의 정보와 초당 수천 건의 동시 작업을 처리 가능하여 대량의 데이터를 관리 할 수 있다
                  • : 대규모로 확장 가능한 분산 NoSQL DB이다
                  • : 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 사용
                  • : 메모리 기반의 키-값 구조 데이터 관리 시스템으로 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장한다
                  • : 문서지향 데이터베이스로, 이것은 객체지향 프로그래밍과 잘 맞고 JSON을 사용할 때 아주 유용
                  • : 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미
                • : RDBMS(=SQL)는 보통 관계형 데이터베이스라고 하며 반면 NOSQL은 비관계형 데이터베이스이다
              • APM
                • A(Apache) : 웹서버, P(PHP) : 웹 프로그래밍 언어, M(MYSQL) : 데이터베이스 3가지가 연동되어 운영되도록 만든 환경이다.
                • 출처: https://velog.io/@jiyoonoh-dev/APM이란
                • Extra
                • 또 다르게 Application Performance Management의 약자로 웹 서비스의 동작 상태를 관찰하고 성능을 분석하며, 특히 미들웨어(WebLogic, Tomcat, JBOSS 등)에서 일어나는 트랜잭션의 사용 시간을 분석하여 각 단계별로 성능에 영향을 미치는 원인을 분석할 수 있습니다.
              • 비트나미
              • : 여러가지 어플리케이션 솔루션들을 다양한 환경에 쉽게 설치할 수 있게 패키지를 만들어 배포해주는 회사로 어플리케이션배포도구라고 말할 수 있다.
              • 로컬호스트(localhost)그래서 VScode나 다른 것으로 자신이 개발한 웹사이트를 열 때 url창에 localhost:8080이 아닌 127.0.0.1을 쳐도 된다.
              • : 호스트명으로, 자신의 컴퓨터를 의미하고 IPv4에서의 IP 주소는 127.0.0.1이다.
              • 가상머신(Virtual Machine)
                • 사용이유
                  • 다른 운영체제를 사용해야 하는 경우(맥OS에서 윈도우, 윈도우에서 리눅스)
                  • 독립된 작업공간이 필요한 경우 (바이러스 회피, 백업)
                • Virtual Box
                  • 오라클에서 만든 가상머신 솔루션
                  • 오픈소스
                  • 무료
                • 리눅스, macOS, 솔라리스, 윈도우를 게스트 운영 체제로 가상화하는 x86 가상화 소프트웨어
                • VMware성능적으로 VMware가 좋다라고 하기도 한다.
                • 유료이다.
                • Virtual Box와 별 차이는 없으며 Vmware는 CPU를 코어/쓰레드 따로 설정할 수 있는데, virtualbox는 코어만 설정할수 있다.
              • 하드웨어를 소프트웨어적으로 구현해서 그 위에서 운영체제가 작동하도록하는 기술로 물리적 컴퓨터처럼 애플리케이션과 운영 체제를 실행.
              • Linux, Ubuntu
                • 리눅스(Linux): 리눅스 탄생하기 이전부터 사용되고 비용에 부담이 있어 개인이 사용하기 부담이 있는 유닉스를 대체하는 것
                • : 다중 사용자, 다중 작업(멀티 태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)로, 여러 사람이 하나의 리눅스 시스템에 접속하여 다수의 프로그램을 동시에 실행할 수 있다.
                • : 컴퓨터 운영체제의 한 종류이자, 커널 자체를 의미하기도 한다.
                • 우분투(Ubuntu)
                • : 데비안(Debian) GNU/리눅스를 기반으로 만들어졌으며 고유한 데스크탑 환경을 사용하는 리눅스 배포판이다. (리눅스의 여러 배포판 중에 하나인 데비안에서 또 한 번 파생된 배포판입니다)
              • 리눅스 명령어
                • ls : 현재 위치의 파일 목록을 조회하는 명령어
                • cd : 디렉토리를 이동하는 명령어
                • touch : 파일의 용량이 0인 파일을 생성, 날짜 변경하는 명령어
                • mkdir : 디렉토리를 생성하는 명령어
                • cp : 파일을 복사하는 명령어
                • mv : 파일을 이동시키는 명령어
                • rm : 파일을 제거하는 명령어
                • cat : 파일의 내용을 화면에 출력하거나 파일을 만드는 명령어
                • redirection : 화면에 출력되는 결과를 파일로 저장하는 명령어
                • alias : 자주 수행하는 명령어들을 쉽게 사용할 수 있도록 설정하는 명령어
                [linux] 리눅스 기본 명령어/자주 쓰는 명령어리눅스 명령어 모음 BEST 50 초보자 및 전문가용 - 도라가이드
              • 02. 꼭 알아야 할 리눅스 기본 명령어 10가지
              • : ls , cd, touch, mkdir, cp, mv, rm , cat, redirection, alias ..등
              • 리눅스 디렉토리 구조
                • 리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있다
                • 디렉토리를 구분하는 '/'는 리눅스에서 사용하고 윈도우는 반대인 '\'를 사용
                • /(루트)
                • : 최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리들의 시작점임
                • /bin
                • : 기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm 등과 같은 명령어들이 이 디렉토리에 존재
                • /boot
                • : GRUB 과 같은 부트로더에 관한 파일들(grub.conf 등)이 이 디렉토리에 존재
                • /dev
                • : 시스템 디바이스(device)파일을 저장하고 있는 디렉토리
                • /etc
                • : 시스템의 거의 모든 설정파일이 존재하는 디렉토리 (시스템제어판용, 사용자 관리설정, DNS설정파일)
                • /etc/mai/
                • : sendmail.cf 나 access 파일등의 sendmail 의 설정파일들이 존재하는 디렉토리.
                • /etc/ssh/
                • : SSH 서비스, 즉 sshd 데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리
                • /etc/squid/
                • : squid 프락시서버의 설정파일들이 저장된 디렉토리
                • /etc/skel/
                • : 계정사용자 생성시의 초기화파일들이 저장된 디렉토리
                • /home
                • : 사용자의 홈디렉토리, useradd 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성
                • /lib
                • 커널모듈파일과 라이브러리파일 즉, 커널이 필요로하는 커널모듈파일들과 프로그램(C, C++ 등)에 필요한 각종 라이브러리 파일들이 존재하는 디렉토리.
                • /proc
                • "가상파일시스템" 이라고 하는 곳으로 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳
                • /usr
                • 시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리
                • /var
                • 시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리
                리눅스 디렉토리 구조
              • vi(vim) 편집기 사용법
                • Vim에서
                  • 일반모드에서 a i o A I O를 입력하면 입력모드로 전환일반 모드에서 : /를 입력하면 명령모드로 전환 한다.
                  • 일반모드를 제외한 모드들에서 일반모드로 전환하고 싶으면 esc를 입력하면 된다.
                  • 일반 모드에서 v V를 입력하면 비주얼 모드로 전환
                [리눅스, 유닉스]vi (vim) 편집기 기본 사용법, 명령어, 단축키, 동작법 & 문제
              추가 개념 키워드
              • Web Server(WS)와 Web Application Server(WAS)
                • Web Server(WS)특징
                • : 정적컨텐츠(단순 HTML, 문서, CSS, JavaScript, 이미지, 파일)를 제공하는 서버
                • 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고 HTML문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램
                • Web Application Server(WAS)
                • 인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서 주로 동적 서버 컨텐츠를 수행하는 것으로 데이터베이스 서버와 같이 수행된다.
                WAS와 WS은 기능을 분리하여 서버 부하 방지와 보안강화 등의 이점이 있기 떄문에 따로 이용한다.WEB 서버와 WAS 서버의 차이[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS
              • {즉문즉설} WAS와 WS의 차이점은? (feat. Nginx, Node Express, Flask)
              • [Web] 웹 서버와 WAS의 차이를 쉽게 알아보자
              • 운영체제(OS)
                • 운영체제목적은 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축이다.
                • 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임으로 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
                • Window, MacOS
                  • Window특징
                    • GUI(그래픽 사용자 인터페이스)
                    • 선점형 멀티태스킹(Preemptive Multi-Tasking)
                    • FAT32 파일 시스템 사용
                    • PnP(Plug and Play, 자동감지 기능)사용
                    • OLE(Object Linking and Embedding)사용 등..
                  • 마이크로소프트사가 개발한 운영체제로 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다.
                  • MacOS특징
                    • 일관되고 직관적인 UI
                    • 별도의 백신 설치 필요 X
                    • 시스템의 전체 설정을 담는 레지스트리가 존재 X
                  • 애플이 개발한 유닉스 운영 체제이다.
              • CLI와 GUI
                • 인터페이스2가지 시스템 또는 장치가 결합해 있는 경계
                • 서로 다른 사물이나 시스템 간에 커뮤니케이션(소통)이 가능하도록 설계한 상호 작용 방식
                • GUI
                • 그래픽 사용자 인터페이스라는 것으로 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다.
                • CLI작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다
                • 명령 줄 인터페이스로 텍스트 터미널을 통해 사용자와 컴퓨터가 상호작용하는 방식이다.
              • HTTP상태 코드를 제공.
              • 포트번호 80번 사용
              • Hyper Text Transfer Protocol로 인터넷에서 데이터를 주고받을 수 있는 TCP/ IP를 이용하는 응용 프로토콜(규칙)
              • 패키지 설치와 컴파일 설치
                • 패키지는 라이브러리(library)와 유사한 개념이다. 
                • 패키지 매니저
                  • 컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다.
                    • 역할
                      1. 패키지의 dependency 관리
                      2. 패키지의 보안관리
                      3. 여러 패키지를 기능에 따라 그룹으로 묶어 정리
                      4. 패키지 압축 해제
                      5. Software repository로부터 패키지를 찾고, 다운로드하고, 설치하고, 업데이트
                    Debian계열의 Ubuntu 에서는 apt-get 으로 프로그램 설치, 업데이트, 삭제가 가능.
                  • CetnOS, Redhat 에서는 yum 을 이용하면 됩니다.
                  • 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴
                • 컴파일 설치
                • 컴파일이라는 것은 프로그래머가 작성한 소스코드를 바이너리 파일로 변환하는 과정이다.https://zetawiki.com/wiki/컴파일_설치
                • 보안정책의 이유로 회사에서 업무적인 목적으로 사용한다면,Package manager 사용이 원활하지 않을 수도 있다 이때 컴파일 설치해서 사용.
반응형
Comments