패스트캠퍼스 챌린지 04일차

Ch3_1 강의 운영 체제 환경 설정 소개 

Ch3_2에서는 macOS에서어떻게 환경설정을 하는지 소개하고 Ch3_3에서는 Windows에서 WSL2활성화를 통한 우분투 20.04구성을 소개한다. 그리고  AWS운영체제 환경을 설정하는지 알게 된다. 그리고 Ch3_4부터는 AWS소개부터 본격적인 실습환경 구성부터 프리티어 소개, 그리고 도구 설치 등에 대해서 알게된다. 

AWS 실습환경 구성에 대해서 말하면 다음과 같다. 
  • 프리티어 소개
  • AWS 실습 계정 생성
  • AWS SSH KEY등록 및 ACCESS KEY 발급
  • AWS CLI 설치 및 이용방법 소개
  • AWS비용 이슈 대처법 소개 

강의는 기본적으로 MacOs로 진행되나 굳이 MacOs를 살 필요까지는 없으니 Windows에서 WSL를2를 설치하는 것을 따라하여 볼 것이다. 

그러면 WSL2를 구성하여 보자. 

Ch3_3 WSL2 + Ubuntu 20.04 LTS구성(Windows)

(Ch3_2가 MacOs이니 찾아보기 바란다.)

WSL란 - (Windows Subsystem for linux)
  • Windows에서 linux를 실행할 수 있게 해주는 것
  • 여러 리눅스(CentOs, RedHat, Ubuntu...)를 실행할 수 있게 해주는 것.

1. Power shell을 관리자 권한으로 실행

2. 명령어 입력

3. 재부팅 진행

4. powershell을 관리자 권한으로 다시 실행하고 wsl입력하고 다음과 같은 메세지 확인(wsl정상적으로 기동)


Ubutu 설치 (in microsoft store)

마이크로소프트 스토어에서 ubuntu검색 ubuntu 20.04 lts 다운로드, 시간이 좀 지나면 사용자 계정이랑 password 입력하라고 나옴. 


  • powershell에서 제대로  ubuntu가 제대로 설치 되었는 지 확인하기 위해 wsl 명령어 wsl -l -v입력
  • wsl -l -v 은 현재 설치된 리눅스 배포판을 보는 명령어 보는 명령어 임. 설치된 리눅스 배포판과 상태, 버전이 나옴.
  • wsl2로 업데이트 하고 싶으면 링크는 찾아 보세용. 이건 아마 배포하면 안 될 것 같아서 배포하지 못합니다. 

변환은 powershell에서 진행하고 변환 시간은 꽤 걸립니다. 

아무튼 결과적으로 위와 같이 2로 변환하였는데 실제로 wsl을 써보니 다시 ubuntu가 실행되는 걸 알 수 있었음. 

wsl2를 기본으로 사용

  • wsl --set-default-version 2

윈도우 터미널의 사용(CMD가 아님)
  • CMD와/Powershell과 다름
  • CMD/Powershell/SSH/WSL을 같이 쓰고 싶을 때 사용 가능(어떻게? - 다중 탭을 지원하므로, 함께 킬 필요 없음.)
  • MS 스토어에서 설치 가능

오오 신기함 좀 더 편리하게 개발을 할 수 있겠음. 

 

 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다

 #패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online!

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

패스트캠퍼스 챌린지 03일차

 

  • DevOps엔지니어 로드맵
  • DevOps엔지니어 신입
  • 문제를 대하는 자세
  • 신입 가능한가

를 주제로 다룬다. 따라서 신입이 아닌 사람은 SKIP하여도 좋을 것 같다. 솔직히 나도 이 강의를 들으면서 긴가민가하다. 그런데 강의가 30분이나 되는 거 보니 뭔가 있나 보다. 일단 들어보자. (다 듣고 보니 필수 수강이다. 오히려 경력직이 SKIP이다.)

Ch2_3 DevOps엔지니어 성장 전략
먼저 DevOps엔지니어의 로드맵(2020을 살펴보자) - 번역본

https://velog.io/@exploit017/2020-%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A1%9C%EB%93%9C%EB%A7%B5

DevOps엔지니어 로드맵(2020)

엄청 많지만 요약해 보면 다음과 같다. 

1. 먼저 프로그래밍 언어를 익히는 것을 추천한다. 역자는 Go 언어를 추천했고 강사 역시 Go 언어를 추천했지만 나는 Python을 이미 익히고 있다. Node.JS도 풀스택에 활용할 수 있어서 좋은 언어다(지금도 배우고 있음.) 강사도 추천하였다. 

2. 운영체제에 대한 이해시스템에 대한 이해(프로세스 관리/쓰레드 및 동시성 관리/네트워크의 기초적인 내용/POSIX 표준에 대한 개념/네트워크 개념/입출력 관리/가상화 기본/메모리 저장소 개념/파일 시스템 기본)

+ Systemd(?) / initid (?) - 이해 필요

3. 서버에 대한 학습을 하기 위해서는 OS에 대한 학습을 해야 한다. 주로 리눅스를 사용하므로 리눅스 계열(우분투, CentOS)등에 대해서 학습하는 것을 추천(구형 노트북 하나 사서 패캠에 있는 리눅스 강의 들을 것 - 본인 구매하였음)하고 그 다음에 천천히 윈도우를 공부하는 것을 추천.  

4. Vim/Nano/PowerShell등을 통한 터미널 접근방법을 학습하는 것을 추천한다. 

5. Text manipulation tool(awk, sed, grep...)을 학습하며 업무의 효율성을 증진시킬 수 있다. 

6. Process monitoring tool 7. Network tool 8. System performance tool 9. Others

6,7,8,9를 학습하면 운영상 이슈/network이슈/ performance이슈/ os이슈/ process이슈/ volume작업 가능여부를 볼 수 있음. 따라서 각각에 어떤 명령어 있고, 어떤 상황에서 사용 가능한지 학습해야 한다. 

10. terminal multiplex(tmux)는 하나의 터미널에서 여러 세션을 열어서 동시 작업을 할 수 있게 하는 것으로 TMUX가 최신에 나온 것으로 많은 기능을 지원함. 

11. Netwoking protocol과 보안에 대한 개념에 대해서 이해해야 함. 즉, 1)기본적으로 웹 관련해서 HTTP를 이해하고 이에 TLS를 적용해서 2) HTTPS개념을 이해할 필요가 있다. 그리고 파일 전송에서 3)FTP개념을 이해하고 서버 접근을 위한 3)SSH, 보안을 위해서 4)SSL/TLS를 이해, 방화벽 접근을 위한 개념인 5)Port Fowarding개념을 이해해야 한다. 

12(Optional) Email과 관련된 Protocol을 학습해야 함. SMTP와 IMAPS, POP3프로토콜이 기본적으로 Email과 연계되어 있음. 그리고 관련보안을 이해하고 도메인을 위해서 DMARC/SPG/Domain keys를 이해해야 함. 

13(중요). 방화벽에 대한 내용을 이해하기 위해서 Reverse proxy와 Caching server, Fowad proxy, Load balancer

14. Web server는 최근 Nginx를 많이 사용하나 자바 계열에서는 Tomcat을 아직까지 대부분 사용하고 있음. 뿐만 아니라 Apache도 사용하고 있으므로 Nginx를 먼저 익히고 그 다음으로 Tomcat과 Apache를 학습해야 함.  


IaC에 대한 내용

15. CI/CD툴에 대한 학습

 Gitlab CI/Jenkins/Github Action/Circile CI와 같은 툴에서 전통적으로 Jenkins를 많이 사용하긴 하지만 너무 비싸므로 오픈소스가 있는 Circile CI를 알아 보는 것을 추천. 

16. 설정관리는 Ansible본 강좌에서 다룸. 

17. 컨테이너 오케스트레이션은 kubernetes를 사용해보자. 가볍게 사용해 보려면 Nomad를 학습. 

18. Infastructure provisioning을 하기 위해서는 Terraform을 학습하는데 본 강의에서도 다룸. Terraform은 클라우드에 종속적이지 않고 코드로 AWS및 다른 리소스들도 관리 할 수 있다. (Cloud Formation은 AWS만 관리 가능)


Software and Infrastructure monitoring

19. Log관리는 Elastic stack을 이용하여 관리하는 것을 추천하므로 관련내용을 공부해야 함. Elastic Stack이 log관리에 특화되어 있긴 하지만 Application monitoring, infrastructure monitoring도 가능해서 기술 stack을 일원화하는 것도 가능함. 기업에서 Granfana를 주로 사용하고 있다면 로키(?)를 함께 사용하여 Infastructure와 log의 monitoring을 함께 실시하여 이를 일원화 하는 것도 가능함. (?)

21. Application monitoring은 퍼포먼스나 매트릭을 측정할 수 있는 도구이며 마이크로 서비스 아키텍쳐 상에서는 각 마이크로 서비스 아키텍쳐 사이의 네트워크 통신들을 측정하는 분산 트래싱 기술이 적용되어 있는 제품: Jaeger, OpenTracing: 오픈소스이고 상용제품으로는 Datadog도 좋음. -> Datadog이 제일 비쌈. 

22. Infastructure monitoring은 기업에서 쓸 수 있는 예산이 많을 경우 즉, 쉽게 Monitoring을 구축할 수 있는 경우 Datadog를 통해 구축/그렇지 않을 경우 즉, 오픈소스를 활용하여 직접 구축해야 할 경우 Prometheus와 Grafana를 활용


Cloud Provider

23. AWS(본 강의에서 다룸)를 익힌 다음 GCP를 익히고 AZURE를 익히면 쉽게 익힐 수 있을 것임. 

24. Cloud Design patten은 서비스의 가용성과/데이터 관리/설계 및 구현/관리 및 모니터링에 대한 내용을 학습해야 하는데 각각은 1) 어떤 식으로 디자인을 설계를 해서 고가용성을 확보하고 2) 데이터관리를 어떻게 해서 데이터 라이프사이클을 가져가고, 3) 어플리케이션을 구성할 때 어떤 설계 방식과 구현을 가져갈 수 있는지, 3) 어떤 식으로 모니터링을 해서 가시성을 확보 할 수 있는지. 등을 공부해야 함. - 실제 프로젝트에 투입이 되고 실무에서 경험을 쌓을 수 있음. 

 이렇게 보면 엄청나게 많은 기술을 익혀야 할 것 같다. 백엔드로 조금 지식을 가지고 있다고 해도 추가적으로 공부해야 할 양이 엄청나게 많다. (더구나 주니어나 1년차나 나같이 다른 분야에서 DevOps일을 하려면.) 여기서는 하나의 기술 스택을 이해하면 쉽게 다른 스택을 이해 할 수 있다고 하는데 과연 그럴까=_=

 

DevOps엔지니어 신입은 가능한가

 DevOps신입은 거의 불가능한 거 같다. 강사의 말도 백엔드 엔지니어나 시스템엔지니어가 인프라를 공부하다가 DevOps엔지니어로 넘어오는 경우가 많다고 한다. 역시 필요하다면 당장은 AWS자체는 개발을 내가 하되, DevOps가 필요하면 외주를 맡겨야 겠다. (아니면 인원을 뽑거나) DevOps엔지니어는 단기간에 될 수 있는 것은 아니고, 상당 기간의 공부를 필요로 하는 것이고 주로 경력직을 요하는 것이라고 한다. 그런데 지금 당장 DevOps엔지니어가 필요 할까? 이것부터 일단 결정해야 할 것 같다. 

DevOps엔지니어 성장 전략(문제를 대하는 자세)

1. 시스템을 도입하여 단순 기능만 동작하게 가는 것(초보)

2. 기능의 확보를 넘어 고장에 대한 대비, 즉 안정성을 확보 하는 것. (중급)

3. 사내 표준에 따른 자동화를 수행하는 것. (상급)

4. 시스템의 접근제어와 데이터에 보안을 적용하는 것. (여기부터 최상급)

5. 최적화를 통해 동일한 머신에서 비용 대비 좋은 성능을 내는 것

> 이를 위해서 어떤 기술이나 도구를 사용해야 하는가? 또는 직접 만들어야 하는가? 

> It depends on situation

장애 대응은 어떻게 해야 하는가

장애가 발생하면 근본원인(Root Cause)을 찾고 장애기록(Post-mortem)을 남기는 습관을 기르자. 

- 저장 공간이 다 찼네, 볼륨확장하고 끝. 이 아님

- 저장 공간이 계속 다 차네, 왜 다 차지? 아 Log파일이 굉장히 크네, 이에 대한 해결을 하도록 하자. 

지금 조직에서 한 번 깊이 문제를 다뤄 보자.

Stack overflow같은 데서 처리하는 버릇을 좀 버리자. 이거 내가 잘하는 건데, 모든 정보는 인터넷에 있지만, 모든 문제를 인터넷에서 대충 처리하고 해결하다 보면 신뢰를 잃기 쉽다. 

- 영어! 영어!  

 

DevOps 엔지니어는 해야 할 일이 정말, 정말 많다. 단 시간에는 될 수 없을 거 같다. 당장 DevOps엔지니어를 목표로 하는 것 보다는 꾸준히 공부를 하다 보면 어느새 DevOps 엔지니어의 스펙을 만족하는 사람이 되어 있지 않을까? 

일단 당장 내가 할 수 있는 것은 빨간 줄과 노란색 배경색으로 나타내보니 6개 정도 된다. 공부해 봐야겠다. 가능하면 네트워크도 병행해서 공부해 봐야겠다. 쉬운 거 부터 해야지 쉬엄쉬엄. 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성 되었습니다.

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online!

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

패스트캠퍼스 챌린지 02일차  

인증과 함께 출발!


 Ch2_2) DevOps 엔지니어의 역할 

이번 강에서는 DevOps와 DevOps엔지니어의 하는 일, 그리고 DevOps팀의 핵심지표에 대해서 알아 보도록 한다. 

DevOps라면 Development 와 Operation의 합성어이기 때문에 개발과 운영을 둘 다 한다라고 착각하기 쉽다. 하지만 정확히 DevOps Engineer가 하는 일은 다음과 같다. 

개발자가 개발 뿐만 아니라 운영에도 참여 할 수 있도록 환경을 만들어 주는 사람. 즉, 조직에 DevOps문화를 정착 시키는데 도움을 주는 역할을 수행. 

그런데 여기서 의문이 들 수 있다. 그러면 개발자가 그냥 개발과 운영을 다 수행하면 되지 왜 DevOps 팀이 존재하는가. (돈 낭비 되게) 여기서 상기에 언급한 DevOps Engineer의 역할을 살펴보자. 환경을 만들어 주는 사람이라고 하였다. 즉, 개발자가 개발한 결과물을 Test하고, 배포하고 로그나 매트릭을 관측하는데 필요한 환경을 만드는 사람이다. 

그런데 이 환경이 없으면? 개발자가 구축해야 하지 않겠는가? 이 무슨 시간의 낭비이고 돈의 낭비인가. DevOps가 하는 일을 보고 깜짝 놀랐다. 엄청 많다. 개발자가 하기에는 일단 불가능하다. 개발자는 개발만 해야지 요즘에 Fullstack만 찾아서 전부 Fullstack만 공부하는데=_=

잡설을 좀 넣었다. 

다시 본론으로 들어가서 DevOps 엔지니어의 역할을 살펴보자. 

1) 네트워크(회사 인원에게 사설 네트워크 사용 가능하도록 함)

  • 가상 N/W, 물리 N/W 구성
  • 프록시 VPN 서버 운영
  • DNS서버 운영

2)개발 및 배포 플랫폼 

  • 깃허브나 깃랩과 같은 버전관리 및 개발협업 플랫폼
  • CI/CD 파이프라인 시스템 운영/관리
  • QA테스트 및 성능 테스트를 위한 환경 제공
  • 저장소 운영 및 관리

3) 오케스트레이션 플래폼(?)

  • 쿠버네티스/ECS/NOMAD와 같은 오케스트레이션 시스템 구축/운영
  • Airflow/Argo worflow와 같은 워크플로우 엔진 구축/운영

4) 관측 플랫폼

  • 로그/매트릭/업타임/APM정보를 관측할 수 있는 중앙화된 시스템 구축/운영
  • 주요 이벤트에 대한 알림 시스템 구축

5)클라우드 플랫품

  • 개발자들이 사용할 수 있는 클라우드 환경운영(자체 클라우드나 Public Cloud)

6)보안 플랫폼

  • LDAP, AD, SAML등을 활용하여 통합된 임직원 계정계 운영(직원 입퇴사 등 접근 관리)
  • 서버 및 DB 접근 제어 System 구축 및 운영
  • 네트워크 방화벽 정책 관리

7) 데이터 플랫폼

  • MYsql/DynamoDB/Redis와 같은 DB 구축/운영
  • Raddit MQ/Kafka/SQS등과 같은 메시징 서비스
  • DW/BI 구축/운영

8) 기타 서비스 운영

 8가지나 된다. 일견 내가 DevOps를 하려고 하면 8가지를 모두 섭렵해야 하는가. 하고 생각을 할 수도 있지만 그렇지는 않다. 일단 기업별로 전문가가 모두 있을 것이고 소규모 기업은 8가지 중 소규모 만큼만 구축하면 될 것으로 생각된다. 

하지만 기본적으로 8가지가 모두 유기적으로 연관이 되어 있으므로 CI/CD를 구축하기 위한 1) Git과 2) Cloud, 3) Network, 4) AWS, 4) 전반적인 IT Infra는 모두 섭렵해야 하는 것으로 생각이 된다. 본 강의에서 확실히 익힐 것은 AWS, Network이고 추가적으로 Ansible도 제공하는데 이도 섭렵하면 도움이 될 것이다. 

 

오늘은 2개 이상 하기는 글렀고 솔직히 앞으로도 2개 이상 할 자신이 없어졌음. ㅎㅎ

시간이 너무 오래 걸림

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성 되었습니다.

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online!

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

 

 

 

 

 

 

 

 

 

 먼저 해당 강의를 구매하기 까지 약간 망설임이 있었다고 하고 싶다(그리고 강의를 구매 할 사람들도 참고 바란다). 왜냐하면 AWS에 유료 서비스를 사용해야 했기 때문이다. 하지만 어쩔 수 없지 않은가. 일단 사용해 봐야 알 수 있고 그러면 내 가치를 올릴 수 있을 지도 모르기 때문에 ..지르고 봤다! 

 실제로 본인은 일단 급하게 AWS환경에서 설비 예지정비를 구현해야 하는데 AWS를 너무 모르는 거 같아서 한 번에 끝내는 AWS인프라 구축과 DevOps 운영 초격자 패키지 Online강의를 구매했다. AWS 백서로 공부하는 것도 많이들 추천 하지만 일단 믿고 한 번 가보자. 

 패스트캠퍼스 챌린지 01일차  


Ch1_1) 오리엔테이션 

  • Course1-DevOps 기본 개념
  • Course2-AWS기반 중소 규모 아키텍트 설계
  • Course3-AWS기반 대 규모 아키텍트 설계
  • Course4-코드를 통한 IaC 인프라 관리
  • Course5-도커와 쿠버네티스를 통한 운영
  • Course6-CI/CD를 통한 지속적 운영/지속적 통합 구현
  • Course7-모니터링 서비스 구축
  • Course8- AWS기반 구축
  • Special Course: Kuberetese에 AWS EKS(?)

 모르는 것도 있지만 대부분 내가 구현하는 아키텍쳐에 필요한 것이다. 대부분의 아키텍쳐가 거기서 거기이기 때문에 그럴 수도 있지만 일단 오리엔테이션에서는 패스트 캠퍼스 합격점! 물론 Special Course처럼 모르는 점도 있지만 자세히 진행 하다 보면 알 게 되지 않을까 싶다. 그리고 강사도 실무에 적용하는 것을 목표로 교수를 진행한다고 한 덕분에 실제 적용하는 것도 가능하지 않을까


아, 그리고 Challenge는 매일 2개에서 많으면 5개까지 Chapter를 듣는 것을 목표로 하고 있다. (그냥 학습이 가능하면 끊어지지 않는 선에서 포스팅 하겠다.) 


Ch2_1) DevOps개요

  • Devops의 정의 

개발(Dev)와 운영(Ops)의 합성어로 개발과 운영을 효율적으로 하여 제품의 변경사항을 빠르게 반영, 품질을 높이는 것

- 자세한 사항을 알아 보기 위해서는 소프트웨어 생애주기(SDLC)를 알아 봐야 하는데, 이 SDLC에서 개발팀과 운영팀, 그리고 PM과 다양한 아키텍트 사이에 불협화음이 있었음. 이전의 SDLC아키텍쳐는 다음과 같음. 

이전의 개발 아키텍쳐

  • Service와 Deploy까지는 PM/디자이너/개발자가 함께 상호간 커뮤니케이션을 해야 했고
  • Deploy와 Operation까지는 개발자/테스트 엔지니어/운영자가 상호간 커뮤니케이션을 해야 했다. 

 따라서 이에 모두 속하고 시스템을 만든 개발자가 차라리 Service, Deploy, Operation까지 모두 할 수 있다면 품질이 훨씬 개선 되지 않을까 하는 패러다임이 DevOps이다. 

 

이러한 패러다임을 구현하기 위한 기술에는 어떤 것이 있을까

1. 지속적 통합

개발자의 변동사항을 Build 및 Test후, 중앙 Code 저장 장치에 저장, 빠르게 버그를 발견하는 것을 목표로 한다. 

- 품질의 향상

2. 지속적 배포. 

- 개발의 산출물을 자동으로 개발 및 운영 환경으로 배포하는 자동화된 파이프라인을 구현

가장 기본적인 DevOps기능은 1, 2라고 함. 

3. 마이크로 서비스

- 대규모 서비스 Build하는데 병목 현상을 없애기 위해 Complie을 마이크로화하고 쪼개 Build time을 감소시킴

4. IaC(InfraStructure As Code)

- 인프라를 코드로 관리하여 변경사항을 자동화

5. 모니터링 및 로깅

- 개발자들에게 monitoring과 metric을 중앙에서 확인할 수 있도록 함. 

6. 소통 및 협업

- Slack등을 사용하여 소통 및 협엽을 유용하게 함. 


이외에 버전관리 등으로 다양한 기술을 활용하여 DevOps를 구현할 수 있음. 

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

sys.path.append(PATH)

from ~ import ~

'OS and 코딩' 카테고리의 다른 글

0. input(), input.split()  (0) 2019.06.20

sudo systemctl hibernate

+ Recent posts