Skip to content

Latest commit

 

History

History
119 lines (93 loc) · 5.06 KB

File metadata and controls

119 lines (93 loc) · 5.06 KB

모던 서버 기술 관련 배경지식 이해

  • 최신 서버 기술 큰 그림과 로드맵 이해하기 (도커와 마이크로서비스)
    • 서버는 24시간 구동이 필요하며, 특정 목적으로 사용되는 프로그램이 많음 (웹서버)
    • 다양한 리눅스 패키지와 업데이트로, 프로그램 설정 등이 수시로 달라짐
    • 서버 이전 시 이전할 서버에 맞도록 재설정이 필요하게 됨
    • => 도커 출현
    • 도커는 서버 환경을 감싸서, 도커 레벨로 서버를 다룰 수 있음 (도커로 말았다 라는 표현)
      • 따라서, 서버 패키지 버전 변경 등등으로 일일이 서버 설정이 불필요
      • 단순히 도커를 만들어서, 서버에서 실행만 하면 됨.
  • 웹 서비스 개발과 마이크로서비스
    • 모놀리틱 구조
      • 하나의 서버에 모든 기능을 넣는 구조
      • MVC 패턴으로 구조화하려는 노력은 있으나, 어쨌든 하나의 서버가 모든 기능을 담당
    • <-> 마이크로 서비스
      • 서비스가 방대해짐에 따라, 하나의 서버에 모아놓으면, 특정 기능의 문제로 전체 시스템에 장애가 발생
      • 여러 서버에 각 기능을 분산해놓은 후, Rest API 등으로 통신을 통해 전체 서비스를 운영

DevOps

  • 등장 배경
    • 본래 새로운 기능을 개발팀에서 릴리즈하면, 개발팀은 운영팀에 어떻게 운영할 지 알려줘야.
      • 그러나, micro features라면, 많은 기능을 제대로 알려주기 어렵고,
      • 운영이 잘 안될 경우, 이 부분은 개발팀 역할이 아니므로 운영팀에 제대로 안 알려줌
    • => 운영 + 운영시스템 효율화 / 자동화 프로젝트를 목표로 부여
      • 개발자가 목표를 가지고 개발을 할 수 있음
      • 개발자는 micro features에 대해서도 빠르게 이해할 수 있 (다양한 기술 습득)
  • 자동배포
    • Realease System 자동화
    • 코드 리뷰, 테스트 자동화
    • 서비스 모니터링 시스템
    • 이슈 발생시 커뮤니케이션 시스템
  • 각 마이크로 서비스를 도커로 개발 => 도커 개발
  • 초대용량 서비스 유지 보수를 위한 서버 핸들링 필요 (예 : 네트워크 트래픽에 따른 서버 관리) => 쿠버네티스 개발
  • 수시 릴리즈를 지원하기 위한 배포 시스템
    • 개발자가 git에 신규 코드를 릴리즈하면,
    • Jenkins/Travis CI 등으로 서버 자동 재가동
    • => 배포 자동화
  • 수시 릴리즈시, 서비스는 중단되지 않았으면 좋겠음 => 무중단 배포

리눅스 역사 (별로 안 중요)

  • 서버에 많이 사용되는 운영체제
  • 오픈 소스 운동
  • GNU / Linux

AWS 맥에서 접속하기

chmod 400 kimjuho.pem
ssh -i kimjuho.pem ubuntu@52.79.179.194

리눅스와 파일

  • 모든 것은 파일이라는 철학을 따름
    • 모든 interaction은 파일을 읽고, 쓰는 것처럼 이루어져 있음
    • 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐
  • shell
    • 사용자와 컴퓨터 하드웨어 또는 운영체제간 인터페이스
    • 사용자의 명령을 해석해서, 커널에 명령을 요청해주는 역할
    • 관련된 system call을 사용해서 프로그램이 작성되어 있다.
  • 하드링크와 소프트링크
    • cp 명령 : 파일 복사

      cp [origin file] [new file]
    • A와 B는 각각 물리적으로 10MB 파일로 저장

    • 하위 폴더를 포함하여 복사하기

      cp -rf * 폴더
    • 하드링크

      • ln [origin file] [new file]
        • A와 B는 동일한 i-node를 서로 다른 포인터로 가리키고 있는 것일 뿐
        • [new file]이 바로가기 파일인 셈
    • 소프트링크 (심볼릭링크)

      • windows OS의 바로가기와 동일
      • ls - al하면, 소프트링크 확인 가능

ubuntu

  • 리눅스 커널 + bash shell + 다양한 프로그램의 조합에 따라 여러가지 리눅스 배포판이 있을 텐데 그 중 하나
  • CentOS나 Fedora와 같은 RedHat 계열 배포판은 RPM이라는 패키징 시스템을 사용함
  • ubuntu와 같이 데비안 계열 배포판은 deb라는 패키징 시스템을 사용함

ubuntu 패키지 관리 실무

  • ubuntu 패키지 인덱스 정보(배포판 버전에 따른 패키지 업데이트 버전 정보 등) 업데이트

    sudo apt-get update
  • 설치된 ubuntu 패키지 업그레이드 (함부로 하지 말것)

    sudo apt-get upgrade
  • 패키지 설치

    sudo apt-get install 패키지명

VIM 에디터 이해 및 설치

  • VIM
    • Vim은 Vi에 자동화, 시각화 메뉴 등을 추가한 프로그램
    • Vim 이외에 이맥스(Emacs)라는 유명한 에디터가 있음