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. 클라우드 디자인 패턴
- 가용성
- 데이터 관리
- 설계 및 구현
- 관리 및 모니터링