1. 프로그래밍 언어 배우기
- Go
- Rust, C, C++, Python, Ruby, Node.js
- 어떤 언어를 선택하는 것보다 자동화를 위한 프로그래밍 지식을 습득하는 것이 중요하다.
2. 다양한 OS 개념 이해 (StartupManagement, ServiceManagement)
- 프로세스 관리
- 스레드와 동시성
- POSIX 기초
- 네트워크 개념
- 입출력 관리
- 가상화
- 메모리/스토리지
- 파일 시스템
3. 서버관리 방법에 대해 배우기
- 일부분의 OS에서 일부의 관리 지식을 습득
- 어떠한 Linux 배포판이라도 시도해보기
- Linux에 대한 경험이 전무하다면 Ubuntu를 선택
3-1. 운영체제
Linux
(SUSE Linux, Debian, Fedora, Ubuntu, CentOS, RHEL)
- Unix (FreeBSD, OpenBSD, NetBSD)
- Windows
3-2. 터미널 활용 방법 배우기
terminal multiolexers
문자열 조작도구
(awk,sed,grep,sort,uniq,cat,cut,echo,fmt,tr,nl,egrep,fgrep,wc)
프로세스 모니터링
(ps,top,htop,atop,lsof)
네트워크
(nmap,tcpdump,ping,mtr,traceroute,dig,airmon,airodump,dig,iptables,netstat)
배쉬 스크립트 배우기
Vim, Nano, PowerShell, Emacs
소스 앱 컴파일 (gcc, 제작 및 기타 관련된 것)
시스템 퍼포먼스
(nmon,iostat,sar,vmstat)
기타
(strace,dtrace,systemtap,uname,df,history)
4. 네트워크, 보안 및 프로토콜
- HTTP
- HTTPS
- FTP
SSL/TLS
DNS
OSI Model
SSH
Port Forwarding
mails (SMTP,IMAPS,POP3S,DMARC,SPF,도메인키)
5. " ____ " 의 정의와 설정방법
리버스 프록시
포워드 프록시
캐시 서버
로드 밸런서
방화벽
웹서버
(IIS,Apache
,Tomcat,Caddy,Envoy,Linkerd,Nginx
,Ostio,Consul)
6. 코드로 인프라 관리 (Infrastructure as Code)배우기
컨테이너
(Docker
,rkt,LXC)
환경구성관리
(Ansible
,Salt,Chef,Puppet)
컨테이너 오케스트레이션 (K8s,DockerSwarm,Mesos,Nomad)
인프라 프로비저닝
(Terraform
,CloudFormation,Pulumi)
서비스 메쉬
7. CI/CD 도구 배우기
깃랩CI
Jenkins
GitHub Actions
Circle CI
Travis CI
Bamboo
TeamCity
Drone
Azure DeveOps
8. 소프트웨어와 인프라 모니터링 방법 배우기
인프라와 모니터링
- Prometheus
- Grafana
- Nagios
- Zabbix
- Monit
- Datadog
어플리케이션 모니터링
- Jaeger
- New Relic
- AppDynamics
- Instana
- OpenTracing
로그관리
- Elastic Stack
- Graylog
- Splunk
- Papertrail
9. 클라우드 제공업체
AWS
- Digital Ocean
- Google Cloud
- Azure
Linoda
Vultr
- Heroku
10. 클라우드 디자인 패턴
- 가용성
- 데이터 관리
- 설계 및 구현
- 관리 및 모니터링