AWS Network Mindmap

아래의 마인드맵에 따라서 학습하려 한다. 1. 각 학습 내용들은 aws network 태그로 관리한다. 1. 만들어진 문서는 여기에서 확인 할 수 있도록 링크를 건다.

Opsgenie를 이용한 AWS 인프라 이벤트 관리 시스템 구성

나는 인터넷 서비스의 품질을 확보하기 위한 가장 중요한 활동을 아래와 같이 정의 한다. 문서화 테스트가 포함된 모니터링, 관제 시스템 및 장애(인시던트)관리 프로세스 모니터링 결과는 결국 알람과 인시던트의 형태로 출력된다. 알람과 인시던트는 업무처리 시스템에 따라서 처리를 해야 한다 대략적인 프로세스는 아래와 같을 것이다. 이벤트, 경고(alert), 인시던트(incident)에 대해서 정리를 하고 넘어가야 겠다.

SRE - Site Reliability Engineering

Site Reliability Engineering(이하 사이트 신뢰성 엔지니어링 혹은 SRE로 표기한다.)는 소프트웨어 엔지니어링 기술들을 인프라 및 운영에 적용하는 것을 의미한다. SRE 팀을 이끌고 있는 Google의 Ben Trenor에 따르면, SRE는 "소프트웨어 엔지니어가 이전에는 작업이라고 불렀던 일을 처리 할 때 어떤 일이 일어날지"에 대한 것이라고 설명했다. Ben Treynor이 7명의 소프트웨어 엔지니어로 구성된 팀을 이끌면서 프러덕션 운영 환경을 개선하기 위한 프로젝트를 진행했다. 이 프로젝트의 결과물이 SRE다. 이 팀은 구글 사이트가 안정적이고 효율적으로 운영하기 위한 방법을 찾아야 했다.

Continuous delivery

Continuous delivery(CD 혹은 CDE, 지속적인 전달)는 팀이 짧은 주기로 소프트웨어를 생산하는 방식으로 소프트웨어를 안정적으로 출시할 수 있도록하는 엔지니어링 방식이다. 빠른 속도와 잦은 빈도로 소프트웨어를 개발하고, 테스트를 끝내고 출시하는게 목표다. 이 접근법을 이용하면 응용 프로그램을 보다 점진적으로 개선하고 변경 사항을 업데이트 할 수 있게 된다. 소프트웨어의 기능이 변경되면 리스크가 따르기 마련인데, 잦은 사이클로 테스트와 출시를 반복하기 때문에 리스크를 최소화 할 수 있다. CD를 위해서는 간단하고 반복가능한 소프트웨어 배포 프로세스를 개발해야 한다.

Dart Tour

우분투 리눅스 19.04 에 Dart를 설치했다. 편집기는 vim을 이용하고 있다. flutter는 Android studio를 쓰고 있는데, 언어를 학습하는데에는 너무 무겁다. 언젠가 VS Code로 설정해봐야 겠다.$ sudo apt-get update$ sudo apt-get install apt-transport-https$ sudo sh -c curl https$ sudo sh -c curl https$ sudo apt-get update(2018년 7월)현재 버전은 2.4.0이다.$ dart --versionDart VM versionDart는 모바일 애플리케이션, 웹 애플리케이션, CLI, 서버측 응용 프로그램등을 만들 수 있다. 범용 개발 언어라고 불러도 될 것 같다. 다만 를 보면, 꽤나 상황이 좋아졌음을 알 수 있다. Job Market를 제외하면 나름 선방하고 있다. 특히 Growth and Trends를 보면 무려 20위에 랭크되고 있는데, 19위인 코틀린 보다 더 나은 상황이다.

Joinc AWS Migration

Joinc 사이트를 AWS로 이전하기로 마음 먹었다. 여기에는 "비용"이라는 걸림돌이 있다. 지금은 한달 3만원짜리 서버 호스팅을 받고 있는데, AWS로 옮기는 순간 상당한 비용 발생이 예상됐다. EC2 RDS ELB S3 CloudFront 중간 중간 분석도구도 사용하려 한다. Route 53애초에 AWS로 옮기려는 이유는 완전한 VPC를 구성해서 Joinc 사이트를 실제 운영해서, 실제 데이터(로그 수집, 분석, 모니터링, 보안)를 경험해보고 싶어서다. 네트워크/시스템 구성도 프러덕트 레벨로 하길 원했다. 그러다 보니 비용만 월 10만원은 나올 것 같았다.

VSCode 기반의 Flutter 개발환경 만들기

을 만들기는 했지만, 인간적으로 너무 무겁다. 그렇다고 작업을 못 할 정도라거나 그런건 아니고, 그동안 vim만 사용하다보니 적응하기가 쉽지 않았다. 키보드 입력 속도를 간당간당하게 따라가는 느낌. 이것 저것 너무 산만한 느낌. 그래서 VSCode로 환경을 구축하기로 했다. Vim 기반 개발환경도 찾아보긴 했는데, 좀 무리인 것 같았다. 설치 운영체제는 우분투 리눅스 19.04다. Visual Studio Code 다운로드 페이지로 이동했다.

VSCode로 AWS Serverless 개발 환경 만들기

서버리스 아키텍처의 장점은 아래와 같다. 1. 비용 1. 확장성과 유연성 1. 생산성 물론 단점도 있다.(마법의 은탄환은 없는 법이라서) 1. 성능 1. 보안 1. 프라이버시 AWS Lambda는 AWS에서 제공하는 컴퓨팅 관련 서버리스 서비스다. 서버리스라는게 개념은 아주 예쁘지만 "서버가 없고" 많은 기능들이 추상화 돼 있기 때문에 개발 & 테스트 환경을 만들기가 애매모호한 단점이 있다. 해서 AWS 에서 제공하는 서버리스 프레임워크인 SAM 혹은 serverless.com 같은 회사의 serverless 프레임워크를 이용해서 개발을 한다.

Dart function

다트는 순수 객체지향 언어(True object-oriented language)이므로 함수도 유형이 Function인 객체로 다룬다. 즉 함수를 변수에 할당하거나 다른 함수에 인자로 전달 할 수 있다. Dart 클래스의 인스턴스를 함수처럼 호출 할 수도 있다. 아래는 함수 구현 예제다.main() { print("Factorial ${factorial(10)}");}int factorial(int number) { if (number <=0 ) { return 1; } else { return (number + factorial(number-1)); }}Dart는 타입을 정확히 지정 할 것을 권장하지만, 생략해도 작동하긴 한다. 선택사항이긴 한데, 그냥 타입을 지정하는 걸로가자.

터미널 기반 Flutter 개발환경

지금까지 만들어본 개발 환경은 아래와 같다. 1. 1. 이번에는 터미널 기반으로 개발 환경을 세팅해보려한다. Vim 기반으로 세팅해보려는게 이유다. 굳이 왜 vim 기반이냐고 하면, 너무 가볍기 때문이다.Dart SDK와 Flutter 프레임워크는 이미 설치를 끝낸 상태이므로 곧바로 프로젝트를 만들어보기로 했다.create명령으로 helloworld 프로젝트를 만들었다.# flutter create helloCreating project helloworld...