- 최신 서버 기술 큰 그림과 로드맵 이해하기 (도커와 마이크로서비스)
- 서버는 24시간 구동이 필요하며, 특정 목적으로 사용되는 프로그램이 많음 (웹서버)
- 다양한 리눅스 패키지와 업데이트로, 프로그램 설정 등이 수시로 달라짐
- 서버 이전 시 이전할 서버에 맞도록 재설정이 필요하게 됨
- => 도커 출현
- 도커는 서버 환경을 감싸서, 도커 레벨로 서버를 다룰 수 있음 (
도커로 말았다라는 표현)- 따라서, 서버 패키지 버전 변경 등등으로 일일이 서버 설정이 불필요
- 단순히 도커를 만들어서, 서버에서 실행만 하면 됨.
- 웹 서비스 개발과
마이크로서비스- 모놀리틱 구조
- 하나의 서버에 모든 기능을 넣는 구조
- MVC 패턴으로 구조화하려는 노력은 있으나, 어쨌든 하나의 서버가 모든 기능을 담당
- <-> 마이크로 서비스
- 서비스가 방대해짐에 따라, 하나의 서버에 모아놓으면, 특정 기능의 문제로 전체 시스템에 장애가 발생
- 여러 서버에 각 기능을 분산해놓은 후, Rest API 등으로 통신을 통해 전체 서비스를 운영
- 모놀리틱 구조
- 등장 배경
- 본래 새로운 기능을 개발팀에서 릴리즈하면, 개발팀은 운영팀에 어떻게 운영할 지 알려줘야.
- 그러나, micro features라면, 많은 기능을 제대로 알려주기 어렵고,
- 운영이 잘 안될 경우, 이 부분은 개발팀 역할이 아니므로 운영팀에 제대로 안 알려줌
- => 운영 + 운영시스템 효율화 / 자동화 프로젝트를 목표로 부여
- 개발자가 목표를 가지고 개발을 할 수 있음
- 개발자는 micro features에 대해서도 빠르게 이해할 수 있 (다양한 기술 습득)
- 본래 새로운 기능을 개발팀에서 릴리즈하면, 개발팀은 운영팀에 어떻게 운영할 지 알려줘야.
- 자동배포
- Realease System 자동화
- 코드 리뷰, 테스트 자동화
- 서비스 모니터링 시스템
- 이슈 발생시 커뮤니케이션 시스템
- 각 마이크로 서비스를 도커로 개발 => 도커 개발
- 초대용량 서비스 유지 보수를 위한 서버 핸들링 필요 (예 : 네트워크 트래픽에 따른 서버 관리) => 쿠버네티스 개발
- 수시 릴리즈를 지원하기 위한 배포 시스템
- 개발자가 git에 신규 코드를 릴리즈하면,
- Jenkins/Travis CI 등으로 서버 자동 재가동
- => 배포 자동화
- 수시 릴리즈시, 서비스는 중단되지 않았으면 좋겠음 => 무중단 배포
- 서버에 많이 사용되는 운영체제
- 오픈 소스 운동
- GNU / Linux
chmod 400 kimjuho.pemssh -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하면, 소프트링크 확인 가능
-
- 리눅스 커널 + bash shell + 다양한 프로그램의 조합에 따라 여러가지 리눅스 배포판이 있을 텐데 그 중 하나
- CentOS나 Fedora와 같은 RedHat 계열 배포판은
RPM이라는 패키징 시스템을 사용함 - ubuntu와 같이 데비안 계열 배포판은 deb라는 패키징 시스템을 사용함
-
ubuntu 패키지 인덱스 정보(배포판 버전에 따른 패키지 업데이트 버전 정보 등) 업데이트
sudo apt-get update
-
설치된 ubuntu 패키지 업그레이드 (함부로 하지 말것)
sudo apt-get upgrade
-
패키지 설치
sudo apt-get install 패키지명
VIM- Vim은 Vi에 자동화, 시각화 메뉴 등을 추가한 프로그램
- Vim 이외에 이맥스(Emacs)라는 유명한 에디터가 있음