강의 방식은?
기초 지식 학습 -> 실습
클론 코딩할 생각은 없음 - 직접 처음부터 만들어 나가는 방식
이걸 왜 선택했나요? 라는 질문에 답을 할 수 있어야함 .
직접 의사결정 할 수 있도록 !
챌린지에 대한 연속 - 연습
클라우드를 배우는 이유
클라우드 서비스가 없을 때 - 직접 서버 구축
- CPU, Memory, 저장 용량 예측하여 서버 구매
- OS 설치부터 소프트웨어 설치까지 직접 진행
- 네트워크 세팅도 수동으로
클라우드 엔지니어 업무
- 서버 구축 및 자동화
- 데이터 운영 및 백업
- 전체 보안
- 서비스 모니터링 및 장애 대응
- 클라우드 비용 관리
- AI 리소스 관리
클라우드 도메인 직군
- 클라우드 네이티브 팀
- SRE 팀
- 클라우드 보안팀
- 데이터 관리팀
- 서비스 인프라 팀
- 백엔드 엔지니어
- AI 엔지니어
프로젝트 시, 클라우드 엔지니어로서 경험해보면 좋은 일들
서비스 운영
- 애플리케이션을 서버에 올려보고 도메인(이름)을 붙여 서비스 해 본 경험
- 서비스 리소스를 모니터링해서 스케일인/스케일아웃 해보기
- 개인정보처리방침과 이용약관을 이해하고 회원가입을 붙여보기
데이터 관리
- 저장되는 데이터가 손실되었을 때 복구 가능하도록 백업 자동화 해보기!! -> 백업 적용해보는 경험 프로젝트의 차원이 높아짐
- 데이터베이스 관리해보기 -> 클라우드에 데이터베이스 깔아서 하기 !
애플리케이션 보안
- API 작성 시, Header를 이용하여 Token 기반으로 API가 동작하도록 만들어보기 (API 보안 - 세션 이용(초보단계), 토큰 이용)
- 클라이언트에서 데이터를 불러올 때, API 파라미터를 조작하여 계정 데이터 가져올 수 없게 만들기 위해
- 주요 3rd Party Key들을 보관할 때, 코드에 하드코딩 x 밖으로 빼서 관리하거나 Vault를 통해 관리해보기
모든 서비스는 쿠버네티스를 기반으로 운영해야할까?
고급화된 서비스를 항상 써야하는지에 대한 고민
쿠버네티스란?
컨테이너화된 애플리케이션의 자동 Deploy, Scaling 등을 제공하는 관리 시스템
기대점
- 전체 시스템 모니터링이 편하여 서비스 관리가 편할 것 같다
- 스케일 인/아웃이 자유로워 비용관리가 편할 것 같다
- 스케일 아웃이 빨라 갑자기 큰 트래픽이 오더라도 빠르게 대응이 가능할 것 같다.
- 서비스 배포가 매우 편할 것 같다
- 서비스 관리를 모두 코드로 운영 가능하여 편할 것 같다
항상 최적의 솔루션일까?
- 서비스 유저가 10명 쯤 되는데 쿠버네티스가 필요할까?
- 사내 내부 시스템인데 쿠버네티스가 필요할까?
- 제품이 컨테이너로 운영해 본 적이 없을 때 쿠버네티스로 바로 운영할 수 있을까?
<생각해볼 문제>
이중화 - 서버를 두대 이상 띄워서 로드밸런서가 살아있는 서버에 트래픽 연결
안정성 vs 효율성
서버를 재시작 시키고 애플리케이션을 키는데 2분 정도 걸림
서버 하나에 애플리케이션이 떠 있다. 서버가 죽으면 애플리케이션도 죽는다.
비용의 관점
서버가 다운되었을 때 2분 동안 나가는 비용 vs 서버를 이중화하는데 드는 비용
- 서버가 다운되었을 때 :
- 서버 이중화하는데 드는 비용 -> 수치화 가능
- 바로 비교하는게 불가능하더라도 ‘비용’으로 치환하여 비교해볼 수 있음
또 다른 조건들
- 다운되었을 때의 비용은 줄이는게 거의 불가능함.
- 비용은 서비스의 종류와 이용 고객 수에 따라 다름.
- 2분이라는 시간이 짧을 수 있지만, 이게 어떤 서비스인지에 따라 다름. 2분이 생명을 살릴 수도 있고 주식이나 시간을 다투는 큰 서비스와 같은 경우에는 비용이 막대할 수 있음. 이런 경우 안정성이 우선으로 보장되도록 하고 서버 이중화의 비용을 줄이는 것을 검토해야함.
- 만약 고객이 매우 적은 초기이거나,, 고객이 1시간에 한번씩 정도 들어온다 라고 하면,, 서버를 이중화하는데 드는 비용이 고객과의 신뢰의 문제에서 발생하는 비용보다 클 수 있음.
스토리지를 어떻게 이용할 것인가?
- 스토리지 서버를 반드시 이중화해야 하는가?
안정성 vs 효율성
정답은 없지만, 규칙은 있다
- 안정성을 견고히 할수록 클라우드 비용은 늘어난다.
- 서비스가 죽어도 비즈니스에 큰 타격이 없는 사내 서비스라면 이중화 비용이 아까울 수도 있음
- 관리자는 서버가 죽었을 때, 이걸 수동으로 키는 여러분의 인건비와 이중화 비용을 저울질 할 수 있음
- 저울질 결과 이중화를 하거나 빨리 복구하는 스크립트를 만들게 할 수도 있음
- 가장 좋은 방법을 인프라 상황과 제품 상황에 맞게 만들어야함.
제품의 이슈
- 관리자가 이중화를 선택했더라도, 애플리케이션이 받쳐줘야함.
- 만약, 애플리케이션이 비즈니스 로직을 처리하는데 중요한 데이터를 메모리에 캐싱하여 저장하고 있다면?
제품이 어떻게 변경되는지에 대해서도 클라우드 엔지니어로서 같이 고민해야함
어떻게 해야되지?
- 비지니스 상황 면밀히 파악 필요
- 제품 상황을 면밀히 파악 필요
- 팀 상황을 면밀히 파악
=> 사업과 제품을 이해한 커뮤니케이션 능력이 매우 중요함
'Infra' 카테고리의 다른 글
[클라우드] 카테부 - 리눅스 기본 강의 (0) | 2024.07.08 |
---|---|
[클라우드] 카테부 - 클라우드 기초 (0) | 2024.07.03 |