Python에서 Return했을 때

- 함수를 호출 할 때 우리가 return할 값으로 치환 됨. 

예)
def r_plus(a,b):
return a+b
 
r_result = r_plus(2,3)

 

이면 r_plus는 파이썬에서 return이 나올 때까지 None값을 가지고 있다가 최종적으로 리턴이 나오면 

5값을 가지게 된다. return키워드가 없으면 None임. 

'OS and 코딩 > IT 토막 상식' 카테고리의 다른 글

OSI7계층  (0) 2021.11.19
엣지컴퓨팅과 클라우드 컴퓨팅  (0) 2021.11.17
서버 프로비저닝  (0) 2021.11.17

일단 최종 미션을 한 게 감개무량하다. 무려 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

 

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

Django는 관리자 페이지를 잘 지원해 준다고 한다. (iptime인가)

https://docs.djangoproject.com/ko/3.2/intro/tutorial02/

Django 관리자 페이지 관리하기 및 Views관리하기


Django 관리자 페이지 관리하기

1) - python manage.py createsuperuser

Username: admin

Password: ****

superuser created succesfully

- python manage.py runserver

=> 어떤 url로 가야 할까 하고 생각해보면 프로젝트인 mysite의 url.py로 가서 보면 admin/가 있다. 

진짜 iptime인가 .. 뭔가 다 있다. 거기다가 해당 관리자 사이트에서는 데이터(테이블)도 제어 할 수 있다.

admin.py에 코드(admin.site.register(Question)) 만 쓰면 등록/삭제/변경이 가능함. 


Views관리하기

1. 먼저 url request를 받았을 때 어떤 view를 보내줄 지 생각해 봐야 한다. 

2. 그냥 poll/은 index view에 대응된다. 하지만 poll/1, poll/2, poll/3 ......같이 poll뒤에 숫자가 오는 경우는 question_id에 숫자를 인자로 받아서 넘겨준다. 

3.4.도 2와 마찬가지임. 


 하지만 모든 사이트는 고도화된 HTML을 리턴해 줌. 위와 같은 것은 매우 단순한 HTML 임. 따라서 고도화된 HTML을 사용하기 위해서는 TEMLPLATE과 JINJA를 사용!

JINJA

views.py

----

template = loader.get_template(polls/index.html') # pool 폴더 안의 index.html 을 불러와라

----

context = {

'latest_question_list':latest_question_list,

}

#

latest_question_list 

# html 에 latest_question_list 인자가 있으면 latest_question_list인자를 json 형식으로 줘야함. 

진자 언어 징글징글하다. 차라리 JSP가 쉬운듯. 이래서 Django는 대규모 프로젝트에 적합하도 하는듯. 너무 이건 기초적인 것만 알려주는 거 아닌가 모르겠다. 왠지 이 강의 하나로는 DevOps는 어려울 거 같은데. 너무 욕심을 부렸나 보다. 

 

- 끝 - 

 

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

 

깜빡하고 VPC EndPoint만드는 걸 안 했다. 지금 해고 넘어가자. 

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

VPC EndPoint 생성 및 실습

 

VPC EndPoint는 Private subnet냐애 았눈 Private instance를 위한 서비스. 

- 외부 인터넷이 끊겨있으니 다양한 서비스를 활용하지 못함.

=> 외부 인터넷이 끊겨 있는 한계점을 극복하기 위한 것!


전체적인 구조 Remind

예. Private subnet이 S3에 접근 하고 싶음. 그런데 S3는 네트워크에 있음. 접근하기 위해서는 인터넷을 거쳐야 함. => Gateway EndPoint 사용! 

=> 그런데 이러면 NAT Gateway랑 무슨 차이 인가 => NAT Gateway를 사용하면 traffic이 노출 됨! => 보안 취약!


실습 진행

1. I AM에서 역할 설정

I AM 검색 > 역할 > 역할 만들기 클릭

2. 신뢰할 수 있는 유령의 개체 선택

=> AWS 서비스 

=> 사용 사례 선택 => EC2 , 다음

3. S3 접근 권한 선택

S3검색, 선택, 다음

 

4. 태그 선택

name, s3_fullaccess, 다음

5. 검토

역할 만들기


EC2 만들기

1. I AM 역할을 가진 EC2 생성

IAM역할에 S3_FULLACCESS를 가진 역할을 부여. 나머지는 같음. 


PUTTY가 설치가 안 되어 있음.

이 강사는 왠지 배려가 좀 부족한 것 같음.

강의가 주제 별로 구분 된 것이 아니라

그냥 하나의 강의를 시간을 잘라서 이어서 하는 것 같음. 

아무튼 이 부분은 실습을 못 함. 


S3에 접근을 하기 위한 실습 - 버킷 만들기 - VPC EndPoint 생성

 

 

버킷 생성

 

2. VPC > EndPoint 생성

S3에 접근하는 것이므로 서비스에 S3를 검색

- VPC에 Custom을 선택

- Gateway를 돌아서 검색하는 것이므로 

- VPC내부에 있는 Private subnet을 선택


해당 값을 검증하기 위해 PUTTY를 사용해야 하지만 이 컴퓨터에는 PUTTY가 없음 ㅠㅠ

다시 강의를 봐야 하는데 시간이 없다. 


 아무튼 이런 방식으로 VPC EndPoint를 생성한다. 그리고 private subnet에서 외부 서비스에 접속하여 그 서비스에 있는 것을 사용한다. 

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

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한 번에 끝내는 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

 

 

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

프로젝트 개요(온라인 주문 어플리케이션)

어떤 기능을 보유하고 있는가

어떠한 것을 학습할 수 있는가


어떤 기능을 보유하고 있는가
  • 구매자: 음식점을 선택 / 음식 메뉴를 선택 / 배송지를 입력 / 주문의 접수
  • 판매자: 주문내역의 조회/ 예상 소요 시간의 입력
  • 배송자: 배송완료 후 배송 완료를 입력
  • 구매자: 주문 내역을 조회/ 주문의 취소와 확인

어떤 것을 학습할 수 있는가
  • DDD(Domain Distribution Design): 웹개발의 단순화 앱을 어떻게 단순하게 개발할 수 있을 지 확인
  • Django: Django를 통해 백앤드 개발
  • HTML/JAVASCRIPT: 프론트앤드 개발
  • EC2: EC2서버를 띄워서 전세계 사용자들이 볼 수 있도록 함. 
  • RDS: 관계형 DB를 사용하기 위해 RDS사용
  • ELB: 로드밸런싱 기능 사용, 즉 서버나 DB에 부하가 왔을 때 이것을 분산시켜 주기 위한 기능을 사용해 봄, 
  • Route53: 도메인을 설정하기 위해 필요(예. 127.0.0.1 =>www.naver.com)
  • Cloud Watch: 서버의 로그들을 보기 위한 AWS의 기능으로 보안을 위해서 사용함

- 이와 같이 기본적이고 고전적인 모놀로지 식으로 배포함. 

오늘도 개요이고 실습이 없어서 인증샷을 첨부 함. 

 

-끝-

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

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

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

 

+ Recent posts