11/1
네이버 클라우드 플랫폼
춘천 데이터센터
데이터를 안정적으로 보존
전력
전력 안정적으로 전원을 공급하기 위한 시스템
전기실, 변압실 한국전력에서 전압을 22900을 받아와서 380볼트 등으로 변압해서 기기에 공급
ups실 정전시에도 중단없이 공급하기 위해서 ups 도입 uninterruptable power supply
STS실 sts는 ups 후단의 또 하나의 백업장치. 서버실에 안정적으로 전기 공급
서버실
os설치 자동화되어있고 원격 장애 관리 시스템이 구축되어있음
팔만대장경 보관하는 장경각의 모습을 본따서 지음
클라우드 ai로보틱스등 방대한 데이터는 고전력 서버실 운영 gpu사용함
쿨링장치
서버실의 온도를 일정하게 유지
서버의 열기를 식히는 냉방장치
기계실은 냉동기가 있어서 여름에 가동해서 온도낮춤
평소에는 자연바람을 공기필터를 거쳐서 사용함
관리
백업 이중화
데이터 이중화 서버오류를 대비해 예비 서버를 마련해둠
서비스 모니터링실 600여개의 서비스 관제
네이버 사용자 데이터는 ISP업체를 거쳐 데이터센터에 도착함
데이터센터를 빠져나와 ISP업체를 거쳐 네이버 사용자의 기기로 전달
에자일
규정된 프로세스 폭포수 모델같은것 진행과정에 너무 많은 변수가 있다.
모든 태스크가 명확히 이해되고 정확히 동일한 입력값과 동일한 출력값이 생성되지 않는다
입력값의 변동이 많다 요구사항이나 개발팀
그래서 나온것이 적응적 프로세스 프로세스 반복이 불가하다는것을 인정하고 나선형 모델
목표시스템 운영을 프로토타입으로 나누어 점진적으로 발전
지속적인 점검과 조정
비용이 많이들고 프로젝트 관리가 어렵다
반복점증적 프로세스
목표시스템을 여러번에 나누어 출시. 중요한 기능 먼저 개발해서 출시한다 애자일 방법의 근간
에자일 프로세스
적응적으로 반복점증적 프로세스를 기본으로 함
차이점은 출시주기를 짧게 하는것
다양한 요구변화에 유연하게 반응할수있게 해줌 2~4주의 출시주기
고객과 팀원간의 소통, 협력을 극대화
팀이 주체가 되어 능동적으로 행동하는 자기조직화 팀.
에자일 선언문
소프트웨어프로젝트 대형화 복합화됨에 따라 여러개의 방법론 발표
가볍고 실용적인 소프트웨어 개발방법 추구 경량 방법론
2000대에 들어서 에자일이라는 용어로 통합됨
스크럼 = 프로젝트 관리. xp 익스트림 프로그래밍 이 두가지가 가장 많이 사용되는 애자일 방법론
실천법보다 원칙에 충실하자
개인간의 상호작용을 프로세스와 도구보다 중시
동작하는 소프트웨어를 포괄적인 문서보다 중시
고객과의 협력 중시 변화에 대응하는것을 중시
프로세스 도구 문서 등을 경시하라는 얘기는 아님
소통할것. 차트, 회의등
협력: 고객과 함께 생각하고 문제 해결
변화를 수용하기
짧게 시간이 정해진 반복점증개발
가치와 위험도가 가장 높은 일부터 먼저 시작
일찍 자주 일을 보여주고 항상 고객을 끌어들일것
스케줄 빡빡히 잡지 않음 지속가능한 속도를 파악해서 안정적인 속도를 낼것
문서는 필요한만큼 알아서 팀이 정하도록
요구사항 변경을 관리하고 프로젝트 가시성을 개선할 수 있다
스크럼이 과반수이고 스크럼과 xp가 그다음
일일 스탠드업, 제품 백로그, 짧은 출시주기, 회고, 스프린트 계획
DevOps
devops를 활용한 지속적인 서비스 혁신
개발과 운영간 프로세스를 연결하고 자동화를 통해 효율성극대화
과거에는 오래 작업후 배포했는데 현재는 서비스 출시속도가 빨라짐 안정성과 속도를 보장하기 위해서 자동화된 하나의 프로세스로 통합함
핵심요소 = cams
culture 조직이 사일로화되지 않도록 경계 곡물창고
서로 담을쌓듯이 교류하지 않는 현상이 사일로현상
협업수준을 높인다. 사일로화되지 않도록 경계해야함
자기부서 내의 이익만 추구하는것이 사일로 조직
Automation
전 과정을 자동화된 프로세스로 관리하고 품질검사 및 모니터링도 자동화
시간이 절약되고 서비스 일관성 유지
Measure 측정
데이터가 투명하고 접근성이 높아야한다
Share 공유
조직 전반의 요구사항 도출하고 협업툴을 통해서 중복작업 제거
대시보드 슬랙 티켓팅시스템 등을 사용하는 이유이다
cicd
지속적인 통합과 배포를 통해서 개발단계를 자동화해 짧은 주기로 서비스 제공 및 개선
지속적 통합 여러명의 개발자의 소스코드를 하나로 합치는데 레포에 저장하고 빌드해서 테스트한다
지속적 배포 테스트하고 상용서비스에 배포하고 운영 및 모니터링
devops를 통해 조직의 사일로화를 없애고 협업 문화 형성해야함
대시보드의 도입이 필요함 전체 개발단계 설정 개발관련 핵심정보 업데이트하고 회의를 통해 정보 분석 및 소통
서비스 중단없이 제공한다
클라우드 네이티브
클라우드 네이티브는 클라우드 컴퓨팅 환경에서 현대적 애플리케이션을 구축, 배포 및 관리할 때의 소프트웨어 접근 방식입니다. 현대적인 회사는 고객의 요구를 충족하기 위해 신속하게 업데이트할 수 있는 확장성, 유연성 및 복원력이 뛰어난 애플리케이션을 구축하고자 합니다. 이를 위해 클라우드 인프라에서 애플리케이션 개발을 기본적으로 지원하는 현대적인 도구와 기술을 사용합니다. 이러한 클라우드 네이티브 기술은 서비스 제공에 미치는 영향 없이 애플리케이션을 빠르게 자주 변경할 수 있도록 지원하여 혁신 역량과 경쟁력을 제공합니다.
클라우드 네이티브 개발은 DevOps 및 지속적 전달(CD)과 같은 애자일 방식을 지원합니다. 개발자는 자동화된 도구, 클라우드 서비스 및 현대적 설계 문화를 활용하여 확장 가능한 애플리케이션을 신속하게 구축합니다.
네이버 클라우드 플랫폼 CICD
devops프로세스 자동화
지속적 통합 테스트 릴리즈 자동화
ci는 통합할수 있는 리포지토리 필요하고 소스를 빌드하고 테스트하고 결과를 개발자에게 실패/성공 메세지 보내줌.
ci를 통해서 나온 결과물을 자동으로 배포할수 있는 환경이 cd
클라우드에서 이런 과정을 구현해야한다
jenkins를 통해서 빌드하고 ssh로 배포. 빌드된 결과물을 object storage에 저장 오토 스케일링되는 환경에서 시작
object storage에서 마지막으로 성공한 결과물을 init script를 통해서 오토스케일링된 서버에서 실행
젠킨스 파이프라인 기능
소스코드로 할일 지정 groovy라는 스크립트를 사용
빌드단계에서 빌드옵션 지정하고 어디에 저장할것인지 지정
deploy단계에서 옵션 정보 작성
ssh명령어를 바로 실행해서 빌드 결과물을 서버로 디플로이
오브젝트 스토리지에 최신성공 파일 백업해놓고 성공된 빌드를 오브젝트 스토리지에 올리도록 한다 백업한 후에는 성공한 결과물을 여러개 웹서버에 배포 그리고 톰캣이 자동으로 실행되도록 스크립트 짜 놓음
object storage는 aws s3같은것
aws에서 sdk를 제공함
upload,backup을 파이썬 등의 언어로 설정
클라우드 네이티브
하나의 클라우드 업체? 혹은 여러 클라우드 업체?
자동화된 배포 프로세스 필요
대시보드 도입
클라우드에 맞는 개발,운영방식이 클라우드 네이티브
클라우드 이점 최대한 활용할 수 있도록 하는 방식
devops 한팀처럼 움직이는 개념과 cicd방법론이 필요하고
멀티클라우드와 onpremise환경까지 자유롭게 확장 가능하고 안정적인 인프라 기술이 필요하고 그게 컨테이너와 마이크로서비스 아키텍쳐
클라우드 이전에는 물리서버에 직접 운영체제와 앱설치
서버 가상화 기술⇒ 하나의 물리서버를 10개 혹은 20개의 가상서버로 활용
하이퍼바이저로 가상머신 돌린다. 물리서버를 효율적으로 사용 가능
다른 하이퍼바이저 환경에서는 가상머신이 실행되지 않음
다른 하이퍼바이저 환경에서 기존 가상서버 운영하려면 하이퍼바이저에 맞게 이전해야함
유연하게 하기 위해서 컨테이너를 도입함
컨테이너 엔진이같으면 어떤 클라우드에서든 하이퍼바이저에 상관없이 올릴수있고 컨테이너 기반으로 인프라 준비되고 4가지 클라우드 네이티브 핵심요소 container msa devops cicd적용
container는 운영체제를 가상화한다.
물리서버를 효율적으로 사용하기 위해서 가상화 사용하는데 가상서버를 효율적으로 사용하기 위해서 하이퍼바이저 설치하고 가상서버 위에 가상서버 올리면 낭비. 어플리케이션을 가상서버처럼 동작하도록 만든다.
환경에 제약받지 않고 실행 가능하다
msa는 어플리케이션을 실행이 가능한 업무단위인 블록으로 나누고 api를 통해 서로 통신해서 독립적으로 배포할 수 있도록 만듦
단일 어플리케이션이면 세부사항 하나 변경으로 인해서 전체 서비스 중단되는것을 막기 위해서
하나의 가상서버에 로그인,결제 컨테이너를 둘다 올린다. 그걸 여러개 운영한다 그럼 하나가 중지되어도 지속적으로 운영 가능. 오토스케일링으로 개수 조절