일단 최종 미션을 한 게 감개무량하다. 무려 30일간 미션을 수행하다니=_= 하루는 컴퓨터가 낭아갔는데도 불구하고 사무실까지 와서 포스팅을하고 참 고생을 했다. 내가 생각해도 대단하다. 

강의를 듣게 된 계기

- 내 경우 강의를 듣게 된 계기는 기계학습을 Internet을 통해서 구축을 해야 하는데 회사에인원이 너무 부족했던 것이다. PM도 없고 당연히 PL(뭐하는 사람이야 이건)은 당연히 없고 데이터 사이언티스트도 없고 개발자는 현저히 부족(나밖에 없음)하고 이에 따라서 당연히 뭔가 개발을 하려면 당연히 비용이 발생하고 프리랜서를 고용하는 수밖에 없었다. 

- 그리고 당연히 자기개발을 하자는, Python과 머신러닝 딥러닝 이외의 다른 언어를 좀 알아 보자는 느낌적인 느낌도 있었다. (물론 이런 느낌은 DevOps의 스택을 보면서 산산조각 났지만) 

- 이유는 DevOps는 배워야 할 것이 너무 많았다. 차라리 개발자로 여러개 배우는 게 훨씬 낫겠더라. 그러면서 DevOps로 전향하는 게 낫겠더라. 솔직히 초기부터 DevOps를 배우고자 하는 사람은 천재 아니면 업무를 할 시에 매우 스트레스를 받을 것 같았다. 왜냐하면 업무 영역에 비해서 일단 아는 게 별로 없을 것 같았으니까. 

- 아 기본적으로 수업의 내용에 대해서 (내가 배운데까지만) 알아 보면 다음과 같다. 

수업 내용

- DevOps의 기본부터 설명을 해 준다. 

- 클라우드란 무엇인지부터 AWS란 무엇인지 설명을 해 준다.

- AWS의 사용방법을 설명해 준다. (로그인 하는 방법부터 보안 그리고 EC2생성등 상세하게)  

- 리눅스를 좀 알면 좋다. 왜냐하면 PUTTY를 사용하니까. 

- Django를 통해서 백엔드를 구축하는 방법을 가르쳐 준다. 

여기에 풀스택으로 하려면 html이랑 javascript를 알아야 하겠지..? 앞으로 내가 배워야 할 내용인 것 같다. 

(아, 물론 업무도 게을리 하면 안 되겠지만..ㅠ)

DevOps의 기본

- 그럼 DevOps의 기본부터 좀 알아 보자. 일단 Network가 매우 중요하다고 했다. 아 물론 상식 수준에서. 막 Network를 프로그램을 통해서 구축하고 그런 능력이 필요한 것이 아니라 Subnet을 통해서 이 네트워크는 해당 Gateway에서 왜 못 빠져나가고 얼마나 나눠질 수 있는지, VPN에 대한 개념. 과 같이 상당히 일반적이고 주로 AWS에서 많이 사용되는 개념을 네트워크에서 알아야 하기 때문에 DevOps 개발자는 네트워크에 대해서 알아야 한다. 

- 뿐만 아니라 DB역시 DevOps 개발자에게 상당히 중요한 역할을 하는데, ,이는 AWS에서 DB가 다양한 서비스를 가지고 있을 뿐만 아니라 모든 환경에서 데이터는 DB에 저장되니까 환경을 구축하는 DevOps개발자는 DB를 잘 알아야 하지 않겠는가?

- 또한 보안도애 대한 환경도 구성할 줄 모르면 'ㅋㅋㅋ 고딩한테 털림' 이런 메세지를 어느 새 서버에 받게 된다. 

- 그리고 때에 따라서는 ML이나 DL을 구축할 때 RedShift나 Deeplearning과 같은 서비스도 구현 할 줄 알아야 한다. 

무엇보다 중요한 것은 서버에 대한 학습이기 때문에 이에 대한 학습을 위해 선결되어야 할 것이 OS에 대한 학습이다.

이를 정리하면 다음과 같다. 

클라우드란 무엇인가 AWS란 무엇인가

클라우드 컴퓨팅이란 인터넷 기반의 컴퓨팅을 말한다. 즉, 인터넷 상의 가상화된 서버에 프로그램을 두고 필요할때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스이다. 뭐, 자세히는 Public, Private, Hybrid이런 것이 있는 데, 이런 것은 강의에서 설명하지 않았던 것으로 기억하고 IaaS , SaaS, PaaS의 개념은 설명했던 것으로 기억한다. 

IaaS / SaaS / PaaS 

 이 세가지는 자유도에 의해 구분 할 수 있다. 일반저으로 IaaS가 가장 자유도가 높고 그 다음이 PaaS, 마지막이 SaaS이다. IaaS는 인프라 수준의 클라우드 컴퓨팅을 제공해 사용자가 서버 OS부터 미들웨어, 런타임, 그리고 데이터와 어플리케이션까지 직접 구성하고 관리할 수 있음. 

 반면에 PaaS는 운영체제, 미들웨어, 런타임 등을 미리 구축한 상태로 제공하기 때문에 IaaS보다 관리상의 자유도가 낮음.. 하지만  PaaS 사용자는 서비스 외적인 부분에 신경 쓸 필요가 없고, 오로지 애플리케이션 개발과 비즈니스에만 집중할 수 있음. 

 ‘서비스로서의 소프트웨어’를 의미하는 SaaS는 클라우드 서비스 형태 중 가장 완성된 형태의 클라우드 서비스임. 별도의 비용을 들여 소프트웨어 라이센스를 구매할 필요 없이 월간/연간 구독 형태의 사용료를 지불. 반면에 개발 및 유지보수의 필요가 없음. 

 우리는 AWS를 사용할 것이고 이 중에서 가장 자유도가 높은 IaaS(EC2)를 사용하여 개발을 할 것임. 왜냐하면 Amazon Web Services(AWS)는 전 세계적으로 분포한 데이터 센터에서 200개가 넘는 완벽한 기능의 서비스를 제공하는, 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 플랫폼이기 때문이며 수 많은 서비스를 제공하고 있어서 DevOps를 배우기에 최적의 클라우드 서비스이기 때문임. 

AWS의 사용방법(+사전지식)

사전지식이란 AWS에서 VPC를 배우는데 VPC를 구현하기 위해서 필요한 네트워크 지식을 배우는 것이다. 덕분에 네트워크 지식을 조금 습득하였음. AWS사용방법은 MLops를 배우고자 하는 사람은 Sagemake나 Redshift같은 것을 기대하겠지만 여기서는 주로 간단한 로그인 방법부터 강력한 보안방법을 배우고 서버인 EC2 구현 방법에 대해서 배운다. 그리고 간단한 네트워크인 VPC를 구현하는 방법에 대해서 배운다.

 또한 관련해서 EC2 - Subnet을 연결하는 방법에 대해서도 배운다.  Subnet중에서도 Public Subnet/Private Subnet이 있는데 PUTTY를 통해서 어떻게 이Public subnet을 연결하고 Private subnet에 연결하는 지를 배운다. 즉, DevOps 개발자가 알아야 할 간단한 Network를 어떻게 구축해야 할지를 배우고 이는 추후 MLops를 구축할 때 크게 도움이 될 거 같다. 하지만 AWS의 사전 지식이 없는 경우에는 좀 따라가기가 어려울 것 같고 강사가 기본적으로 어느 정도 프로그래밍 지식이 있는 사람에 대한 사람들을 대상을 기반으로 진행하는 것 같다. 예를 들면 EC2 로그인을 할 때 PUTTY계정을 ec2-user로 꼭 해야 하는데 이것을 제대로 말하지 않고 그냥 넘어가는 것이 그렇다. (개인적으로는 인터넷 검색해서 잡긴 했지만 강사에 대해서는 좀 불만이 있었다)

PUTTY로 로그인이 안 되서 한참을 해맴. =_=

- Django를 통해서 백엔드를 구축하는 방법

 솔직히 강의에 나와있는 수준의 Django만을 구현하기 위해서는 튜토리얼 홈페이지만 따라가면 된다고 생각이 된다. 내가 많은 강의를 듣지 않아서인지 모르겠지만=_=;; 자세히 알아야 할 것은 오히려 JINJA/HTML/javascript등이라고 생각이 된다.

 따라서 사전에 이러한 것에 대한 학습을 많이 할 필요가 있다고 생각이 된다. 하지만 강의에서 도움이 되었던 것이 한가지가 있으니 그것은 관리자 페이지의 사용 방법이다. 

 

 클릭만으로 데이터 베이스의 제어가 가능하다니! 물론 코드를 admin.py에 추가해야 하긴 하지만 뭔가 혁신적이다. 이런 걸 하려면 기존에는 HTML 파일 형식을 다 만들고 미리미리 DB에 해당하는 파일을 다 만들어야 하고 또 상호작용을 위해 javascript를 다 만들어야 하는 줄 알았는데 대단하다! 

만족도

 아직 강의의 반도 수강하지 않았지만 일단 만족도는 보통이다. 모르는 지식을 꾸겨 넣어 준다기 보다는 (개인적으로는 그런 걸 좋아한다. 주입식 교육)모르는 지식을 던져준다고 할까. 일단 모르는 게 생기면 다 찾아보고 해결해야 한다(다행히 지금까지는 모르는 지식이 private subnet밖에 없었지만) 

-> 친절하게 모르는 걸 설명해 주지 않는다. 기본적으로 프로그래밍에 대해 지식이 있다고 생각하고 강의를 한다. 예를 들면 VS_CODE를 설치하는 것이나 설정하는 것, 가상 환경을 설정하는 것, 이런 것은 전혀 배려하지 않는다. 개인적으로는 AWS를 사용함에 있어서 매우 필요하다고 생각하는데 본 강의에서는 설명해 주지 않는다. 물론 추후에 설명해 줄 수도 있지만 지금까지 학습한 바에서는 설명이 없다. 

-> 위의 내용과 겹치는 내용이다. 즉, 새로운 지식을 습득할 수 있다. 시간이 걸리긴 하지만(한 강당 대략 1시간) 구글링을 하면서 모르는 지식을 볼 순 있다. 10분짜리 강의라도 내가 정확히 강의를 따라가고 있는 지 구글링으로 강의를 점검한다. 

 예를 들면 WSL2사용도 내 컴퓨터는 매우 느리지만 강사 컴퓨터는 매우 빠르다. 따라서 구글링을 하면서 내가 제대로 따라가고 있는 지 검색할 수가 있다. 솔직히 WSL2의 개념 자체도 이번에 처음 알았다. 위도우에서 우분투를 가용하려면 VMWARE같은 가상 환경을 사용해야만 하는 줄 알았지 이런 획기적인(?)툴이 있는 줄 알이 못했다. 본 강의에서 가장 큰 수확인 것 같다. 

-> AWS를 막 사용하려고 하는 사람에게 도움이 될 거 같은 느낌이 든다. AWS의 계정을 만들고, 보안을 생성하고, EC2서버를 생성하고, PUTTY를 통해 접속을 하는 등의 방법을 알려주기 때문에 자세한 AWS의 사용 방법 보다는 기본적인 AWS서비스의 사용 방법을 알려주는 것에 충실하다. 따라서 이러한 방법론을 알려고 하는 사람들에게 도움이 될 것 같다. 물론 DevOps 개발자로서 막 시작하는 사람이라면 기본적인 사용방법은 구글링으로도 충분히 알 수 있을 것이기 때문에 따로 본 강의를 듣지 않아도 될 것 같긴 하지만=_=나는 비전공자이기 때문에 필요하다

본 강의를 수강한 뒤의 예정

-> 본 강의를 수강한 다음은 ML을 할지, 아니면 DevOps를 계속 할지에 따라 나뉠 것 같다. 만약 DevOps를 한다면 javascript와 같은 웹 관련 언어(NodeJS, HTML)를 배우고 네트워크 기초를 탄탄히 해야 할 것이지만 MLops를 위해서는 MLops개발자가 되기 위해서 기본적으로 필요한 지식들을 배워야 할 것이다. 물론 현재 SaaS플랫폼으로 ML을 제공하는 툴들이 많기 때문에 그냥 업무에서 이런 툴들을 사용하는 것도 생각하고 있기는 하다. 하지만 비용을 생각해 보면 MLops가 나을 것 같다. 그리고 자기개발 측면에서도 MLops를 속성으로 배우는 것이 좋을 것 같고 우리 회사에 MLops나 DevOps개발자 한 명쯤 두는 것도 나쁜 선택은 아닐 것 같다. ML은 내가 충분히 가능하니까! 하지만 그 전에 일단 이 강의를 마치고 기본적인 DevOps강의를 마치는 것이 선결되어야 할 것이다. 즉, 소규모 DevOps를 구축하고 그 다음엔 CI/CD를 구축하는 것이 필요하다. 

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

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

첫번째 장고 앱 작성

- 포스팅하는 도중 갑자기 서피스 컴퓨터가 검은 화면이 되서 AS를 보낼 상황이 되었다.ㅠㅠ 그래서 급하게 사무실로 내려와서 작성한다. 그런데 여기에 파이썬이나 vscode가 깔려있지 않은 관계로 실습은 못해서 추후 컴퓨터를 받으면 그때부터 실습을 할 예정 해당 내용은 강의를 보면서 필요한 내용을 스크린샷으로 복붙할 예정. 

1) Django 설치

 python -m pip install Django

2) Django 프로젝트 생성(https://docs.djangoproject.com/ko/3.2/intro/tutorial01/)

  • mkdir로 내가 원하는 폴더 아무데나 생성
  • python -m django --version => django 설치 및 버전 확인
  • django-admin startproject mysite=> mysite 프로젝트 생성

주) vscode에서 openfolder로 작업폴더를 열고 실시하면 관리하기 좋음. 

django-admin startproject mysite를 쳤을 때 치면 mysite mysite폴더가 생성이 됨. => mysite폴더 내부에는 다양한 .py파일들이 있음. => django를 통해 웹-앱을 구현할 때 반드시 필요한 파일들을 반드시 셋팅 해 놓음. 

3) 프로젝트의 주요 파일(.py)설명

manage.py

서버를 운영할 때(Run/Stop)일단 기본적으로 거쳐야 하는 파일. 

setting.py

Django의 다양한 셋팅 값들을 파이썬으로 코드화해서 보여주는 것. 

SECRET__KEY = 비밀번호

어떤 앱이 인스톨 되어 있는 지, DB는 어떤 것을 사용하는 지, 미들 웨어는 어떤 것들이 있는 지, 

urls.py

url관련된 모든 행위를 담당(url이 들어 왔을 떄 어디로 보낼 것인가와 같은 것) 

4) 서버 RUN

python manage.py runserver 입력

 

여기까지 프로젝트가 생성이 되었음. 

5) 앱 시동

Django는 프로젝트 > 앱으로 구분을 함. 

이전에 django-admin startproject mysite - 이렇게 프로젝트를 만들었다면  

지금은 python manage.py startapp polls - 로 앱을 구동 할 수 있음. (서버를 구동하려면 manage,py를 거쳐야 한다고 하였음)

=> polls안에는 역시미리 파일이 셋팅 되어 있음.

 6) 앱 주요 파일 설명

admin.py

admin을 관리하는 파일

models.py

model = database

database를 crud하는 것을 다 여기서 진행!

views.py

실제 화면이 동작하는 알고리즘이 들어가는 곳

7) Polls 관련 설명

  • python manage.py runserver
  • 127.0.0.1:8080/polls
  • 127.0.0.1:8080/polls라는 url을 치는 것은 컴퓨터의 입장에서는 request를 받는 것
  • mysite에서 url요청이 왔으므로 urls.py를 봄. => urlpattern에 어떻게 되어있나 확인. 
  • path가 빈 값이므로 views.index(views 폴더 안에 index함수---index(request))를 호출해서 이걸 Reponse로 줌.

이러한 로직으로 다른 형태의 url을 구현할 수도 있음. 

8) models.py 구현(DB - sqlite3구현)

프로젝트 위치에서 python mange.py migrate

models.py에는 class가 각각 있는데 class들에 models.Model기능을 상속 받아서 기능을 사용함. 

그리고 마치 Class는 각각 Table에 CRUD를 하는 것과 같은 기능을 가지고 있음. 

python manage.py makemigration polls 

0001_initial.py

mysite>polls>migrations)0001_inital.py

models.py를 통해 코드를 통해 sqlite에 상세한 DB 스키마(0001.initial.py)생성


- 기본적안 Django model의 사용법은 여기까지임. 나머지는 실제로 값을 넣고 확인하는 방법을 강사가 설명하고 있지만 이 부분은 생랼하도록 한다. 

 

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

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

이벤트 스토밍의 방식을 바탕으로한 자세한 모델링

1. Domain Event 정의(모든 상황을 일단 나열)

- Actor가 Action을 해서 발생한 결과는 어떤 것이 있는가?

- 각자 생각나는 Event 를 적고 더 이상 생각이 안 날 떄까지 붙임. 

- 서로 중복되는 것을 없애거나 합침. 

- 포스팃으로 정리

- 이벤트가 발생하는시간 순서대로 붙임. 동시수행되는 이벤트는 이벤트는 수직으로 붙임. 

- 비즈니스 용어로 무슨 일이 발생했는 지 적어야 함. 시스템 내에서(개발)발생하는 것을 찾는 것이 아님. (사용자 입장에서 이해 할 수 있는 언어로!)

예)

참고) 점선: 이벤트가 아예 분리되어 있는 것. (다른 actor가 하는 것)

2. 프로세스 그룹핑

그룹핑 예)

Step3. Commad 정의

- 사용자의 행위 == Command => Command는 일반적으로 무엇을 요청한다

- 각 Event 별로 그 Event 를 발생시키는 Command 가 무엇인지 생각하여 Event 왼쪽에 붙임. (Command1개에 1개 이상의 Event가 발생할 수도 있음)

예.

Step4. Trigger 정의

- Command를 수행하는 Actor정의. Actor를 Command의 왼쪽 하단에 겹쳐서 붙임. 

- Event발생과 관련된 외부 시스템이 있다면 Event우측 상단에 겹쳐서 붙임. 

예. 

Step5. Aggregate 정의

- Command수행을 위한 CRUD(가공)해야 하는 데이터 객체 정의(=Command를 수행해서 Event를 발생시키려면 어떤 데이터 및 정보가 필요한 지 각 Command 와 Event 사이의 위에 적음)

Step6. Bounded Context 정의

- 현재까지 처리한 메타 정보(Actor의 Action/Event/Command의 CRUD 및 DB...)에 바탕한 그룹핑

예.

 

 

Step7. Context MAP 작성

- 큰 카테고리 간의 서비스 간략화

 

인증

 

 

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

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

도메인 주도 설계 개요(DDD) 및 기존(전통적) 방법론 소개

기존 개발 프로세스

기획자

- 사업기획 

- 서비스기획

- 요구사항 정의

마케터 

- 사업기획

- 지표 관리

- 아이디어 제안(기획자에게 추가적인 아이디어 제안)

개발자

- 설계 및 구현(기획자와 마케터가 구상해 놓은 것을 실제로 구현) -  DB의 구조는 어떻게? 언어는 뭘로? 보안은 어떻게? 서버는 어떻게? 등을 정의. 

- 유지보수

디자이너

- 페이지 및 배너 디자인

=> PM이 이러한 인원의 트러블을 조율하고 일정에 차질이 없도록 관리하는 사람 - PM


=> 해당 인원들을 통해서 하기와 같은 업무 프로세스를 수행

기획/디자인/마케팅에서 전체적인 프로세스

  1. 시장조사(IF 시장성이 있다면 서비스 기획)
  2. 서비스 기획
  3. 베타 서비스 개발
  4. 마케팅(소규모) - User Feed Back바탕으로 기획 수정
  5. 서비스 기획
  6. 마케팅(소규모)...반복

개발자 입장의 프로세스

전체적인 요구사항 => 설계 => 구현 => 마케팅 => 수정된 요구사항 => 설계 => 구현 => 반복...

- 기획과 개발에서 각자의 애로 사항 발생 - 소프트웨어 개발과 도메인 모델(기획)과의 불일치 발생

- 결론적으로 도메인을 추상화하여 모델을 만들고 모델을 실체화하여 소프트웨어를 만들기까지 어려움이 발생

: 의사소통에서 많은 loss발생

참고) 도메인: 실제 서비스 / 모델은 서비스를 개발자가 구현을 하기 위해 간략화한 설계도


해결방안

DDD

1. 보편언어 사용

도메인에 대한 어휘를 이해관계자(기획자, 개발자, 분석가)들이 모두 이해할 수 있는 공통 언어로 정의. 

2. 모델 주도 설계

도메인과 모델의 간극을 최소화

분석/설계/구현의 모든 단계를 관통하는 하나의 모델을 유지

=> 의사소통이 좀 더 잘 되도록 하자!

도메인의 복잡성, 즉 소프트웨어의 복잡성을 해결하기 위해서는 의사소통을 잘 되도록 해야 한다. 

 

DDD(전략적 설계)

  • BROAD하게 비즈니스에 맞도록 맞게 설계하는 것 
  • 서비스 안에서 일어 날 수 있는 모든 상황(Context)을 고려 - Event Storming(주문, 주문 취소, 배송 등등등)
  • 이것들을 바탕으로 각 Context 그룹핑
  • 왜 그Context 룹핑?: 하나하나 Context를 설계하기에는 너무 어려움. 어느 정도 추상화 하기 위해 영향으로 구분. 
  • Bounded Context
  • 컨텍스트 맵핑을 통해 Bounded Context간의 관계를 정의

=> 최종적으로 도메일 모델을 생성. 

=> 도메인 모델: 일종의 설계도로 서비스의 다양한 기능들을 간략화해서 추상화한 설계도. 

=> 여러가지 Context를 분리하고 Context mapping으로 연결하고 분리와 연결한 기능을 가지고 있음. 

예)

맞춤형 AI 문제 추천 앱

  1. 아이가 먼저 진단 테스트(Diagnostic test)를 봐서
  2. 레벨을 진단(Level(by part)). 즉, 아이의 수준을 진단 한 다음
  3. 어떤 부분에서 취약점이 있는 지 판단하여
  4. 판별된 Level을 바탕으로 Custom problem set, 즉 유사한 문제를 추천. 
  5. 학생이 문제를 풀면 거기서 Wrong Prob. 를 통해 결과물을 바탕으로 
  6. 다시 Level(by part)로 Level을 진단하고 Custom problem set을 생성
  7. 최종적으로 Level을 통해 백분위 - Predicted Points - 를 계산하고 어떤 부분을 집중적으로 봐야 할 지 알기 위해 Custom Course를 추천

DDD(전술적 설계)

- 전략적 설계보다 전략 안에서 세세하게 모델링하는 것

- 개발방법론이 아닌 일종의 철학. 

 

지금까지 DDD의 철학에 대해서 알아 보았는데, 의사소통만 DDD가 쉽다 뿐이지 솔직히 개발자가 개처럼 일한다는 건 DDD나 뭐나 똑같은 것 같다. 그래서 강의의 짤 인증샷과 함께 오늘은 -끝-

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

 

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

 오늘은 야근을 하고 온 관계로 실습은 못할 것 같아서 바로 다음 챕터에서 뭘 하는 지 보기 위해 다음 챕터 개요를 보기로 했다. 그러면 진행을 해보자.


모놀로지식 아키텍쳐 vs 마이크로 서비스 아키텍쳐 - 차이
모놀로지식 아키텍쳐(서비스를 개발 할 떄 어떤 기능을 하나로 묶어서 관리하는 것)

End-to-End 서비스가 용이

=> 실제로 서비스가 구동되는 처음-끝까지의 모습을 한 번에 확인하기가 용이

=> 간단한 서비스를 빠르게 만들 수 있음. 

=> 단점:

  1.  작은 수정사항이 발생해도 전체를 다 바꿔야 할 수 있음. 따라서 유지보수 어려움 
  2.  서비스가 커지면 구동시간이 늘어날 뿐만 아니라 일부분의 오류가 전체에 영향을 미칠 수 있음.
  3.  각 기능에 따라 다른 언어를 쓸 수 없음. => 한 통에다 다 관리를 하기 떄문임. 

서비 스를 개발 할 떄 그런 다양한 기능들을 잘 게 쪼개서 관리하는 것(마이크로 서비스 아키텍쳐) 

 

마이크로 서비스 아키텍쳐(서비스를 개발 할 때 거대한 - 여러가지 기능이나 로직이 있는 것 - 것을 잘 게 쪼갠 집합체로 보는 것)

- 유지보수가 용이 - 기능 A에서 에러가 나면 각각을 따로 관리하므로 A만 보면 됨. 

- 거대한 서비스도 빠르게 수정 가능하다. (모놀로지는 한 번에 관리하므로 코드를 다 뜯어 봐야 함)

- 각 기능에 따라 다른 언어를 선택 할 수 있음. ( Web: JAVA, 머신러닝: Python...)

<=> 단점: 기능이 분리되어 있고 상호작용하므로 모니터링이 힘듦. 

End-to-End 서비스 구동이 불편(테스트 불편): 모놀로지는 통으로 개발하므로 상대적으로 빠르게 개발 - 테스트 하는 것이 가능하지만 마이크로 서비스는 개발  - 테스트가 느림. 

DevOps는 처음에 모놀로지식으로 개발해서 최종적으로 마이크로 서비스로 운영하여 편리하게 운영 하는 것이 목표 - 물론 초기에는 시장성을 보기 위해 모놀로지식으로 개발하는 것이 좋음!

 

오늘은 실습이 없는 관계로 인증샷 첨부

 

- Ch2. 에서는 모놀로지식 아키텍쳐로 구현하는 것이 목표

- Ch.3에서는 마이크로 서비스로 구현하는 것이 목표

 

끝. 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

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

VPC Bastion HOST 만들기

 

Bastion HOST 외부 유저가 Private subnet에 접속하는 것 - public subnet을 우회해서 private subnet에 접속

Story

- Private EC2생성

- Public EC2생성(Bastion Host)

- Bastion Host를 통해 Private host에 접근 using putty


Public EC2 생성

1) EC2접근

2) EC2 생성(Linuc or Ubuntu - 프리티어)

상세 설정은 위와 같이 

customVPC에서 / PublicVPC를 생성하고 / 퍼블릭 IP자동할당에서 서브넷 사용설정(활성화)를 설정하면 된다. 

다른 건 건드릴 필요 없음. 

다음 클릭

스토리지 볼룸 유형 - 마그네틱 - 변경 / 다음 클릭 - 마그네틱 뭐지

네임태그 추가 - public-ec2입력 / 다음 클릭

  • 보안 그룹 이름 변경
  • 보안 규칙 추가, IPV4 규칙 추가, 
  • 모든 포트 범위에 대해서 0.0.0.0/0 에 대해 접근을 허용하는 것으로 설정

- 검토 및 시작 클릭

다음 클릭

시작하기 클릭

새 키페어 생성(public-ec2-keypair) - 키페어 다운로드 - 인스턴스 시작

Private EC2생성

CustomVPC의 private subnet을 선택하고

private subnet이니 IP할당은 하지 않음 / 다음 클릭

볼륨 유형 - 마그네틱으로 변경 / 다음 클릭

name태그 추가 - private-ec2 / 다음 클릭

보안 정책은 모두 같은데 소스로 public-sg에서 온 것만 inbound로 받아 들이는 것으로 설정 / 검토 및 시작

private-ec2-keypair - 키페어 다운로드 - 인스턴스 시작


SSH를 통한 접근

1) PUTTY 다운로드

- pageant putty 검색

- putty.exe / pageant.exe / puttygen.exe 3개 다운로드

- pagent.exe를 연다. 키를 등록해야 하는데 .ppk만 등록이 된다. (우리가 AWS에서 다운 받은 것은 .pem 임.)  

- puttygen 이 pem -> ppk로 바꿔줌, 

2) Puttygen

-  load - allfiles - pem 선택 - save private key

3) pageant에 key등록

4) PUTTY 오픈

- Public EC2를 통해 Private EC2에 접근 할 것이므로 일단 Public EC2에 접근

Public EC2의 아이피 주소를 일단 집어 넣음

- connection - data - auto-login username: fastcampus-user

- connection - ssh - Auth - Authentication parameter - 체크 Allow agent Fowarding

Open

DOS창? 같이 로그인 됨, 


Private subnet에 접근

 

1) private EC2의 PRIVATE IP를 찾음

2) 접속한 PUTTY에 다음과 같이 침

SSH [PRIVATE SUBNET의 IPV4주소]

 

그러면 접속 되야 하는데??? 왜 안 되지????

ㅠㅠㅠ 질문해야 할듯 아니면 혼자 트러블 슈팅이나ㅠ어제부터 이상하네

덧) connect to host 10.0.1.111 port 22: Connection timed out 이라고 나오는 거 보니 연결 설정이 잘못 된듯. 보안 그룹을 잘못 만들었을 수도 있으나 오늘은 시간이 부족하여 나중에 다시 살펴 보는 것으로 하자!

 

끝!

 

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

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

https://bit.ly/3FVdhDa

 

나만의 특별한 일상과 여행 드로잉 | 패스트캠퍼스

9명의 강사님과 9가지 드로잉, 나만의 특별한 일상과 여행 드로잉.

fastcampus.co.kr

 

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

 

1) VPC의 SUBNET내부에 EC2의 생성에 대한 이해

- PUBLIC SUBNET의 Inbound, Outbound규칙을 따를 것임. 

2) Inbound와 Outbound규칙의 수정에 따른 엑세스 거부와 허용의 살펴 봄. 


 

EC2생성과 보안 정책 연결

1) 인스턴스 시작 클릭

2) EC2생성

실습에서는 Linux를 생성한다. 저번에는 우분투를 생성하였는데 이번에는 Linux를 생성한다. 

그리고 사양으로는 프리티어에서 사용 가능한 t2.micro를 선택하고 다음을 클릭

3) 인스턴스 세부 정보(VPC, 서브넷 등) 입력

- 강사가 Subnet에서 별도로 ip자동할당 작업을 해줬는데 현재는 별도로 자동할당해주는 작업을 해주지 않아도 그냥 선택이 됨. 따라서 별도로 포스팅 하지 않음. 

네트워크 - customvpc

서브넷 - publicvpc

퍼블릭 IP 자동 할당 - 활성화

 

사용자 데이터에 다음과 같은 코드 입력

#!/bin/bash
yum install httpd -y 
service httpd start

그런데 위 코드가 무엇을 뜻하는 는 모름 <= (이해 필요)

현재는 강사가 이해 필용 없다고 하면서 설명하지 않았음. 

다음 클릭 

3) 다음 클릭

4) 네임 태그 생성

다음 클릭

5) 보안 그룹(Security Group) 세팅

최초에는 22번 포트밖에 허용되지 않아 있음. 따라서 이에 대한 세팅 필요. 

다음과 같이 80번 포트와 443번 포트에 대해 통신 가능하도록 설정하였다

(주. 80: http, 443: https)

그리고 검토 및 시작 클릭

개략적인 정보의 확인이 가능함. 

시작하기 클릭

6) 키-페어 다운로드

인스턴스 시작 클릭

7) 확인

인스턴스가 적절하게 만들어졌는지 확인

네트워킹 탭에서 서브넷이 내가 만든 CustomVPC와 연결되었느지 확인

네트워킹 탭에서 서브넷이 내가 만든 Publics subnet과 연결되었느지 확인

 

브라우저 창에 IpV4주소를 입력하여 실제로 잘 연결이 되었는지 확인

 

???????????

 

트러블 슈팅은 일단 나중에 해보고 포스팅을 계속해 보기 위해 강의를 봄. 이후는 실습없이 강의를 보는 것으로 대체함. 

분명히 80번 포트 Allow되어 있는데 강의와 달리 안 됨.

강의에서는 우선순위에서 Deny했을 경우에 접근이 안 되는 것을 보여줌. 

- 강사에게 질문을 하거나 구글링을 해보도록 하자. (근데 질문 하는게 가능한가?) 

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

 

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

AWS에서 NACL설정하기
  • 보안에 대한 개념 설명
  • AWS에서의 실습

AWS에서 instance에 대한 보안을 설정하는 방법은 크게 2가지가 있음

  • NACL - statelss
  • Security group - stateful

이것에 대한 차이는 다음과 같음. 

주) 오른쪽이 Server

테이블(강사는 패킷으로 쓴 것 같다.) 의 의미 - 클라이언트가 Request를 쏠 때는 80번 Port로 쏘고 받을 때는 Server가 Response로 Client의 1025 Port로 달라는 의미 

주)임시 포트의 범위는 1024~65535

  • Server입장에서 생각했을 때 Response가 80번 포트로 들어 오는 것이므로 Inbound
  • Server입장에서 생각했을 때 1025로 Response를 쏴줘야 하므로 Outboud

반대 방향의 흐름(Response)은 위와 같다. 즉, 전체적인 네트워크 구조는 위와 같다. 


Stateful(Security Group)

 

먼저 위 그림의 정책 Inbound: 80 / outbound: none의 의미는 다음과 같다. 

  • 80으로 Client가 쏴주는 것은 허용, 나머지 포트는 불허용
  • outbound(Server입장에서 쏘는 것)는 아예 어떠한 포트도 허용하지 않음. 

그러나 Stateful은 상태를 기억을 하고 있음 => 즉, 원래 80으로 inbond통신해서 request를 서버로 주는 것은 가능하지만 정책상 Response는 아무대도 가면 안 되지만, 패킷에서 1025PORT정보를 기억하고 있음. 따라서 1025로 갈 수 있음. (확인 필요)

- Stateful: Session을 통해 유용한 정보를 기억하고 있다.  

Stateless(NACL)

Stateful과 달리 룰에 따라서만 행동하는 정책으로 위에 따르면 패킷에 상관없이 Outbound를 내보내지 않는다. 


NACL 실습

1. AWS 로그인 > VPC > 보안 > 네트워크 ACL

- 기본 생성된 NACL이 있어서 햇갈릴 수 있지만 서브넷 연결란에서 내가 생성한 NACL을 확인할 수 있다. (이전 시간에 내 Custom subnet과 연결해 놨기 때문에)

- 내 NACL의 이름을 private-nacl로 바꾼 다음

2) 네트워크 ACL 생성 클릭

3) 정보 입력

- 이름 입력 후 NACL이 들어 갈 VPC 입력 - 생성

4) 서브넷을 연결하기 위해 먼저 public-nacl을 클릭하고 - 작업 - 서브넷 연결 편집 클릭

public subnet과 연결 후, 변경사항 저장

5) 확인

 

6) 인바운드 규칙 편집

7) public_nacl 인바운드 규칙 편집

8) 확인

규칙번호에 따라 Allow와 Deny가 있음. 규칙번호는 규칙의 우선순위임. 확인을 위해 아래와 같이 101번 규칙을 설정하고 확인

- 101번에서 거부하려고 했으나,

- 100번에서 이미 들어오라고 허용했기 떄문에

- 101번 규칙은 거부됨. 

(유형과 프로토콜에 대한 설명은 없었음. 추가적으로 공부해야 할듯)

9) public_nacl 아웃바운드 규칙 편집

- 임시 포트는 1024~65535이므로 나가는 포트는 전부 있어야 함!

-끝-

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

 

+ Recent posts