SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
WeAreDevelopers World Congress
• 매년 독일 베를린
• 코로나로 인해 2년만에 대면 행사 진행
• 8000명 이상의 개발자 참석
WeAreDevelopers World Congress
오프닝 키노트
How we will build the software of tomorrow
• Github CEO Thomas Dohmke
• AI 가 함수 메서드명으로 코드 자동 완성 기능을 제공하는 Github Copilot 프로그램을 통해, 개발
자가 코어개발에 집중하게끔 돕는 역할. (대체가 아님을 강조)
• 개발자가 행복해야 세상을 변화시킬 수 있다는 신념으로, Copilot 을 5년 이내에 80% 정확도를 제
공하겠다고 발표.
오프닝 키노트
How we will build the software of tomorrow
• Internet Explorer 종료 발표. 환호를 내지르는 개발자들.
• Backend, Frontend, Devops 손 들라고 하자, 비율이 7 : 2.5 : 0.5
Fullstack 도 은근히 존재.
• 생각보다 없었던 동양인
Micro-frontend 배경
- 모노리스 : 하나의 프로젝트에서 백엔드와 프론트엔드 영역을 함께 개발하는 것.
ex) 스프링, 장고 프레임워크로 서버와 화면을 함께 만든다. 단점은 하나의 에러가 발생하게 되면, 모든 영역에 영향을 줄 수 있음.
- 프론트엔드 백엔드 분리 : 서버와 화면 개발을 분리. 장점은 프론트, 백 엔드 분리 개발/배포가 가능.
대규모 서비스 시 프로젝트가 너무 크기에 긴 배포 시간과 에러 발생시 프로젝트 영향 범위가 크다.
- 마이크로 서비스: 서버의 api 영역을 나눠서, Gateway를 통해 하나의 문으로 접근하여 api를 사용하는 것.
- 마이크로 프론트엔드: 화면/기능/도메인 별로 나눠 독립적인 개발/배포, 조립 후 화면 제공.
마이크로 서비스와 마이크로 프론트엔드?
마이크로 서비스: 각 서비스별, 담당자 별로 팀이 구성되고 운영. (작년)
분리되어 있기에 팀 별로 커뮤니케이션이 느려지는 현상.
마이크로 프론트엔드는 기능/도메인 별로 팀마다 구성원이 조합되기에, 빠른 의사소통과 개발 가능.
특정 기능에 구성원들이 집중하여 End to End 독립적으로 개발/운영이 가능. 팀의 확장과 연관.
기능 별로 각 영역을 담당한다면, 오른쪽 화면처럼 개발 가능.
한 페이지를 개발하는게 아닌, 결제/제품/검색 등으로 독립적인 모듈을 End to End로 개발.
서로의 기능과 코드, 기술을 신경쓰지 않아도 되는(black box) End-to-End 개발.
(물론 신경 쓰지 않을 순 없겠지만…)
https://micro-frontends.org/1-composition-client-only/
: Single SPA , Open Components , Mosaic , Podium , Luigi 및 Piral
- https://single-spa.js.org/
- 여러 프론트엔드 프레임워크(React, AngularJS, Vue, …)를 같은 페이지에 사용하여 구성 가능
마이크로 프론트엔드 프레임워크
: react, typescript, bootstrap
개념
1. Pilets (feature modules)
- 개별 기능 모듈, 각각 고유한 종속성과 자산을 포함하며 완전히 독립적
- pilet 자체가 페이지, pilet내 pilet 일 수 있음.
2. Feed Service (piral cloud)
- pilet들을 배포하는 곳
- feed service에 등록된 모든 pilets을 (Piral instance에서) 다운받아 전체 완성된 서비스를 반영한다.
3. Piral instance (app shell)
- 모든 feature 모듈이 통합되는 곳
- 기본 레이아웃을 위치 시키는 곳 : navbars, headers, footers, shared components
- app shell을 빌드한 결과
- dist/release 호스팅을 위한 결과물로 배포
- npm registry에 배포하여 dist/emulator 개별 pilet의 디버깅 가능
마이크로 프론트엔드 프레임워크
Process
1. App Shell역할을 하는 Piral instance 생성
2. Piral cloud에서 Feed 생성
3. Piral instance와 생성한 Feed와 연결
4. Piral instanc를 npm registr에 배포
5. 배포한 piral intance를 기반으로 pilet 생성
6. 개발한 Pilet을 Feed service에 배포
7. Piral instance를 실행
마이크로 프론트엔드 프레임워크
1. Piral cli 설치
npm i piral-cli g
2. Piral instance (app shell) 생성
piral new --target netflix-piral
3. Piral instance 실행
piral debug
4. Piral cloud 가입 & Feed service에 feed 생성
https://portal.piral.cloud/
5. Piral Instance와 feed와 연결
- piral instanc의 src/index.ts
=> Piral instanc와 연결 가능하고, pilet들을 배포가능
=> Feed에 접근해 배포된 pilet들을 다운로드 가능
6. Emulator build & npm publish
- Pilet 개발시 Piral Instance 접근 필요
- Emulator: Piral Instance 안에서 Pilets 이 어떻게 동작되는지 확인할 수 있도록 제공
piral build --type emulator
npm publish dist/emulator/netflix-piral-ys-1.0.1.tgz
//build emulator
//emulator publish to npm registry
browse 메뉴, 페이지 추가
7. Create & develop Pilet & deploy
pilet new netflix-piral-ys
pilet publish --fresh --url <feed_url> ---api-key <feed_api_key> //deploy pilet to feed service
// create new pilet with piral instance npm package name
// piral instanc가 npm registry에 배포 되있어야 함.
8. Execute Pilet
pilet debug
9. Execute Piral Instance
piral debug
Pilets
Piral Instance
Feed service
Thank You!

Más contenido relacionado

Similar a WeAreDevelopers_micro_frontend_framework.pdf

Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0Beomsik Kyle Kim
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?NAVER Engineering
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기Dexter Jung
 
실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기IMQA
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)JinKwon Lee
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewTaewan Kim
 
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdfeastarJeong2
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Bansook Nam
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container DayAmazon Web Services Korea
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오Q_0
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디소라 정
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Dong Chan Shin
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용jinwook shin
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
 

Similar a WeAreDevelopers_micro_frontend_framework.pdf (20)

Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기실 사례로 보는 고객 디지털 경험 지키기
실 사례로 보는 고객 디지털 경험 지키기
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
20년된 Naver Cafe 서비스가 Modularization으로 진화 하기_정동진.pdf
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
황규영 포트폴리오
황규영 포트폴리오황규영 포트폴리오
황규영 포트폴리오
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 

WeAreDevelopers_micro_frontend_framework.pdf

  • 1.
  • 2. WeAreDevelopers World Congress • 매년 독일 베를린
  • 3. • 코로나로 인해 2년만에 대면 행사 진행 • 8000명 이상의 개발자 참석 WeAreDevelopers World Congress
  • 4. 오프닝 키노트 How we will build the software of tomorrow • Github CEO Thomas Dohmke • AI 가 함수 메서드명으로 코드 자동 완성 기능을 제공하는 Github Copilot 프로그램을 통해, 개발 자가 코어개발에 집중하게끔 돕는 역할. (대체가 아님을 강조) • 개발자가 행복해야 세상을 변화시킬 수 있다는 신념으로, Copilot 을 5년 이내에 80% 정확도를 제 공하겠다고 발표.
  • 5. 오프닝 키노트 How we will build the software of tomorrow • Internet Explorer 종료 발표. 환호를 내지르는 개발자들. • Backend, Frontend, Devops 손 들라고 하자, 비율이 7 : 2.5 : 0.5 Fullstack 도 은근히 존재. • 생각보다 없었던 동양인
  • 6. Micro-frontend 배경 - 모노리스 : 하나의 프로젝트에서 백엔드와 프론트엔드 영역을 함께 개발하는 것. ex) 스프링, 장고 프레임워크로 서버와 화면을 함께 만든다. 단점은 하나의 에러가 발생하게 되면, 모든 영역에 영향을 줄 수 있음. - 프론트엔드 백엔드 분리 : 서버와 화면 개발을 분리. 장점은 프론트, 백 엔드 분리 개발/배포가 가능. 대규모 서비스 시 프로젝트가 너무 크기에 긴 배포 시간과 에러 발생시 프로젝트 영향 범위가 크다. - 마이크로 서비스: 서버의 api 영역을 나눠서, Gateway를 통해 하나의 문으로 접근하여 api를 사용하는 것. - 마이크로 프론트엔드: 화면/기능/도메인 별로 나눠 독립적인 개발/배포, 조립 후 화면 제공.
  • 7. 마이크로 서비스와 마이크로 프론트엔드? 마이크로 서비스: 각 서비스별, 담당자 별로 팀이 구성되고 운영. (작년) 분리되어 있기에 팀 별로 커뮤니케이션이 느려지는 현상. 마이크로 프론트엔드는 기능/도메인 별로 팀마다 구성원이 조합되기에, 빠른 의사소통과 개발 가능. 특정 기능에 구성원들이 집중하여 End to End 독립적으로 개발/운영이 가능. 팀의 확장과 연관.
  • 8. 기능 별로 각 영역을 담당한다면, 오른쪽 화면처럼 개발 가능. 한 페이지를 개발하는게 아닌, 결제/제품/검색 등으로 독립적인 모듈을 End to End로 개발. 서로의 기능과 코드, 기술을 신경쓰지 않아도 되는(black box) End-to-End 개발. (물론 신경 쓰지 않을 순 없겠지만…) https://micro-frontends.org/1-composition-client-only/
  • 9. : Single SPA , Open Components , Mosaic , Podium , Luigi 및 Piral - https://single-spa.js.org/ - 여러 프론트엔드 프레임워크(React, AngularJS, Vue, …)를 같은 페이지에 사용하여 구성 가능 마이크로 프론트엔드 프레임워크
  • 10. : react, typescript, bootstrap 개념 1. Pilets (feature modules) - 개별 기능 모듈, 각각 고유한 종속성과 자산을 포함하며 완전히 독립적 - pilet 자체가 페이지, pilet내 pilet 일 수 있음. 2. Feed Service (piral cloud) - pilet들을 배포하는 곳 - feed service에 등록된 모든 pilets을 (Piral instance에서) 다운받아 전체 완성된 서비스를 반영한다. 3. Piral instance (app shell) - 모든 feature 모듈이 통합되는 곳 - 기본 레이아웃을 위치 시키는 곳 : navbars, headers, footers, shared components - app shell을 빌드한 결과 - dist/release 호스팅을 위한 결과물로 배포 - npm registry에 배포하여 dist/emulator 개별 pilet의 디버깅 가능 마이크로 프론트엔드 프레임워크
  • 11. Process 1. App Shell역할을 하는 Piral instance 생성 2. Piral cloud에서 Feed 생성 3. Piral instance와 생성한 Feed와 연결 4. Piral instanc를 npm registr에 배포 5. 배포한 piral intance를 기반으로 pilet 생성 6. 개발한 Pilet을 Feed service에 배포 7. Piral instance를 실행 마이크로 프론트엔드 프레임워크
  • 12. 1. Piral cli 설치 npm i piral-cli g 2. Piral instance (app shell) 생성 piral new --target netflix-piral
  • 13. 3. Piral instance 실행 piral debug
  • 14. 4. Piral cloud 가입 & Feed service에 feed 생성 https://portal.piral.cloud/ 5. Piral Instance와 feed와 연결 - piral instanc의 src/index.ts => Piral instanc와 연결 가능하고, pilet들을 배포가능 => Feed에 접근해 배포된 pilet들을 다운로드 가능
  • 15. 6. Emulator build & npm publish - Pilet 개발시 Piral Instance 접근 필요 - Emulator: Piral Instance 안에서 Pilets 이 어떻게 동작되는지 확인할 수 있도록 제공 piral build --type emulator npm publish dist/emulator/netflix-piral-ys-1.0.1.tgz //build emulator //emulator publish to npm registry browse 메뉴, 페이지 추가
  • 16. 7. Create & develop Pilet & deploy pilet new netflix-piral-ys pilet publish --fresh --url <feed_url> ---api-key <feed_api_key> //deploy pilet to feed service // create new pilet with piral instance npm package name // piral instanc가 npm registry에 배포 되있어야 함.
  • 17. 8. Execute Pilet pilet debug 9. Execute Piral Instance piral debug