기획 >> 요구 사항 정의 >> 개발설계 > 개발(구축) > 테스트 > 운영전환 > 유지보수 > 폐기
->> 프로젝트 (비용, 일정, 인력(업무:task), 범위 등..)
PM(리더),PL(리더보조),팀원 이 프로젝트를 전반적으로 관리
구축 : Docker, Terraform, Kubernetes, CloudFomation, Ansible Playbook...
-> 자동화된, 중앙화를 선호
=> 구축에 있어 중요한 것은 네트워크! ( 접근제어, 통신 )
3 티어로 시스템을 구축
프론트 >> 백 >> 백
ex) docker >>> 총 5개의 환경을 구성
- 1 voting-app >>> 5000 >> 80 public (Front)
2 redis >> private (Backend)
3 worker-app >> private (Backend)
4 db(postgres) >> private (Backend)
5 result-app >>> 5001 >> 80 public (Front)
ex) CPU가 16core -> 4core 4core 4core 4core 로 나누어 총 4개의 시스템 구성이 가능
exsi, KVM이 대표적인 프로그램
ex) CPU가 16core인데 가상머신에 8core을 할당하면 8core만 실서버가 가짐
전가상화, 반가상화 => 물리적인 성능으로 인한 문제가 있음
해결하기위해 컨테이너가 나옴
ex) 폴더개념 ( 바탕화면에 폴더하나 자체가 OS가 되어 통신을 할당할 수 있음 )
-> 이로인해 가장 큰 장점은 경량화(기존 가상화는 가상환경에 OS를 올리면서 실제 OS설치하는 만큼 성능이나 저장공간이 필요)
-> 컨테이너는 용량이 커봐야 5GB 이내임.
-> 호스트와 리소스를 공유함(CPU, MEM, Storage)
host : 물리적인 HW에 설치된 OS가 돌아가는 환경 = local
ex) 우분투에 도커를 설치해놧음 >> 어디가 호스트일까? 도커 입장에서는 우분투이고 우분투 입장에서는 윈도우
가상화 환경( 가상화 or 컨테이너 모두 )을 보통 guest 환경이라고 함.
Host <----> Guest 통신이 안된다
Guest <----> Guest 통신이 안된다
Bridged NAT => 절대 안된다
-> 같은 NAT여도 IP대역이 달라지면 통신이 안됨.
Guest A <----------------> Guest B
192.168.111.150 ------ 192.168.22.33 >> 둘다 NAT 여도 통신 불가
=> 보통 인터넷이라는 것은 라우터나 스위치에서 테이블(라우팅)을 구성해줘야함. (해당 IP가 누구의 어디에 있는지 알아야 패킷을 전달해줌)
Guest C <--------------> Guest A <----------------> Guest B
192.168.111.150---------192.168.111.150 ---------- 192.168.22.33
192.168.22.22
조건 : A 는 네트워크 card 2장
192.168.111.X 외부 인터넷 가능
192.168.22.X 외부인터넷 접속 불가능
socat TCP4-LISTEN:80,reuseaddr,fork TCP4:192.168.22.33:80 ->> 개발이 끝나고 테스트에 이상이 없어 운영계로 넘어와 실업무에 활용 하는 단계
실무에서 시스템(인프라) 운영 담당자 라고 부름
장애나, 재해 발생 시 우리 시스템은 안전하다! 보장
- 장애: 버그, 외부공격, 고장, 등
- 재해: 화제, 홍수, 등
대응방안 : 이중화, 시큐어코딩, 백업, 정기점검(log검사 등), 대응훈련 등
( 회사가 커질수록 타부서 협조를 잘 안해주려함 )
보안은 모든 분야의 지식을 많이 알고 있어야한다.
다음주는 테라폼 할 예정