Service Mashup with User Interfaces - TheOpenCloudEngine/uEngine-cloud GitHub Wiki

Service Mashup with User Interfaces

Service Mashup(Service Composition) 은 μ—¬λŸ¬κ°€μ§€ μ„œλΉ„μŠ€λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ„œ κ°€μΉ˜μžˆλŠ” 무언가λ₯Ό λ§Œλ“œλŠ” 것이닀.
μ—¬λŸ¬κ°€μ§€ 방법이 μžˆκ² μ§€λ§Œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 방법은 User Interface (UI) λ₯Ό ν†΅ν•˜μ—¬
마이크둜 μ„œλΉ„μŠ€λ₯Ό λ¬ΆλŠ” Human Interaction ν•œ 화면을 λ§Œλ“œλŠ” 것이닀.
μ΅œκ·Όμ—λŠ” UI말고도 chatbot(λŒ€ν™”ν˜•) μœΌλ‘œλ„ 많이 Service Composition 을 ν•˜κ³  μžˆλ‹€.

μ˜ˆμ „ 방식같이 μ„œλΉ„μŠ€λ₯Ό λ°”λ‘œ UI둜 λ§Œλ“€μ–΄ λ‚΄λŠ” 상황(jsp, cs programλ“±)μ—μ„œλŠ” UI둜만 λ‚˜νƒ€λ‚Όμˆ˜ μžˆμ—ˆκΈ° λ•Œλ¬Έμ— μ„œλΉ„μŠ€λ₯Ό BPM에 λ¬ΆλŠ”λ‹€λ˜μ§€, chatbot 에 μ‚¬μš©ν•˜λŠ” ν™œμš©μ„±μ΄ λ–¨μ–΄μ‘Œμ—ˆλ‹€.
κ·ΈλŸ¬λ‚˜ 각 μ„œλΉ„μŠ€λ“€μ„ HATEOAS λ‚˜ Restfulν•˜κ²Œ λ§Œλ“€μ–΄ λ†“μœΌλ©΄ ν•„μš”μ— λ”°λΌμ„œ UI 뿐만 μ•„λ‹ˆλΌ chatbotμ΄λ‚˜ IOTλ“± μ—¬λŸ¬κ°€μ§€ μΈν„°νŽ˜μ΄μŠ€μ— ν™œμš©μ„ ν•  μˆ˜κ°€ μžˆλ‹€.

Service Mashup ν•„μš”κΈ°μˆ 

  1. Extended Role of Front-end in MSA : Service Aggregation
  2. MVVM
  3. W3C Web Component Standard - Domain HTML Tags
  4. Implementation : Polymer and VueJS (Another : ReactJS and Angular2)
  5. Cross-Origin Resource Sharing with API Gateway ( Netflix Zuul )

1. Extended Role of Front-end in MSA : Service Aggregation

μ•„λ§ˆμ‘΄μ΄λ‚˜ facebook 은 κ²‰λ³΄κΈ°μ—λŠ” ν•˜λ‚˜μ˜ UI둜 λ³΄μ΄μ§€λ§Œ λ‚΄λΆ€μ μœΌλ‘œλŠ” 천개 μ΄μƒμ˜ microservice λ“€μ˜ 집합이닀.
facebook 의 λ²„νŠΌ ν•˜λ‚˜ ν΄λ¦­μ‹œ ν•΄λ‹Ή μ„œλΉ„μŠ€λ‘œ 이동을 ν•˜μ—¬ μž‘μ—…μ΄ 이루어 진닀.
facebook 의 μˆ˜λ§Žμ€ 개발자 μ€‘μ˜ ν•˜λ‚˜κ°€ λœλ‹€λ©΄, 전체 화면을 ꡬ성할 ν•„μš”λŠ” μ—†κ³ ,
μžκΈ°κ°€ λ§Œλ“  μ„œλΉ„μŠ€λ§Œ 잘 κ΅¬μ„±μ‹œν‚€λ©΄ λ˜λŠ” 체계λ₯Ό λ§Œλ“€ μˆ˜λ„ μžˆλ‹€.

2. MVVM

Model-View-ViewModel νŒ¨ν„΄. Excel 처럼 λͺ¨λΈμ΄ λ°”λ€Œλ©΄ 화면도 λ°”λ€λ‹€λŠ” κ°œλ…

3. W3C Web Component Standard - Domain HTML Tags

κΈ°μ‘΄μ—λŠ” web page λ₯Ό ν•˜λ‚˜ ꡬ성할적에 빨간색 λ°•μŠ€ 처럼 ꡬ성을 ν•˜μ˜€λ‹€.
ABC의 κ΅¬μ„±μš”μ†Œκ°€ μžˆμ„μ μ— ν•˜λ‚˜μ˜ page μ—μ„œ ν•΄λ‹Ή κΈ°λŠ₯듀을 λ¬Άμ–΄μ„œ μ‚¬μš©μ„ ν•˜μ˜€λŠ”λ°,
μ†Œκ·œλͺ¨ 화면이라면 각자 κΈ°λŠ₯λ“€μ˜ name space λ₯Ό νšŒν”Όν•˜μ—¬ ꡬ성이 κ°€λŠ₯ν•˜μ§€λ§Œ,
μ„œλΉ„μŠ€κ°€ 컀지고 μ½”λ“œλŸ‰μ΄ λŠ˜μ–΄λ‚˜λ©΄ name space μ •ν•˜κ³ , κ΅¬μ„±ν•˜λŠ”λ° 좩돌이 생길 수 μžˆλ‹€.
이것을 ν•΄κ²°ν•˜κ³ μž 객체 지ν–₯ μ–Έμ–΄μ²˜λŸΌ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ΄μ§€λ§Œ κ·Έ μ•ˆμ—μ„œ μ—¬λŸ¬κ°œμ˜ ν”„λ‘œκ·Έλž¨μœΌλ‘œ 관심사λ₯Ό 뢄리 ν• μˆ˜μžˆλŠ” class λΌκ³ ν•˜λŠ” interface κ°€ 웹에도 λ‚˜μ˜€κ²Œ λ˜μ—ˆλ‹€.
μ΄κ²ƒμ˜ ν‘œμ€€μ΄ W3C Web Component 라고 ν•˜κ³ , μ•„λž˜μ˜ 그림의 νŒŒλž€μƒ‰ λ°•μŠ€μ²˜λŸΌ κ΅¬μ„±λœλ‹€.

MVVM 은 λ„λ©”μΈμ—μ„œ μ •μ˜ν•œ Tags λ₯Ό ν•˜λ‚˜μ˜ HTML Tags 처럼 μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.
이전 MSA 의 μ˜ˆμ œμ—μ„œ μ‚¬μš©ν•˜μ˜€λ˜ course λ‚˜ instructor λ“±μ˜ 도메인 객체듀을
ν˜•μ‹μœΌλ‘œ domain specific ν•˜κ²Œ μ •μ˜λ₯Ό ν•˜μ—¬ μ‚¬μš© ν•  μˆ˜μžˆλ‹€.
μ΄λ ‡κ²Œ μ •μ˜ν•œ Domain Tags 듀이 Back-End 의 마이크둜 μ„œλΉ„μŠ€μ˜ resource 와 맞물렀
자율적으둜 μƒν˜Έ 연계λ₯Ό ν•˜μ—¬ 화면에 ν‘œμΆœμ΄ 되게 ꡬ성 ν•  수 μžˆλ‹€.

4. Implementation : Polymer and VueJS

MVVM 의 μ‹€μ œ κ΅¬ν˜„μ²΄λ‘œλŠ” ꡬ글이 λ§Œλ“  Polymer, Angular2 λ‚˜ facebook이 μ‚¬μš©ν•˜λŠ” ReactJS, 쀑ꡭ인이 λ§Œλ“  VueJS 등이 μžˆλ‹€.
μ—¬κΈ°μ„œλŠ” VueJSλ₯Ό μ‚¬μš©ν•˜μ—¬ 화면을 κ΅¬μ„±ν•˜λŠ” 예제λ₯Ό λ§Œλ“€ 것이닀.

5. Cross-Origin Resource Sharing

μ›Ή λΈŒλΌμš°μ €μ—μ„œ ajax λ₯Ό ν†΅ν•˜μ—¬ μ—¬λŸ¬κ°œμ˜ IPκ°€ λ‹€λ₯Έ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ₯Ό ν˜ΈμΆœν• μ μ—
CORS(Cross-Origin Resource Sharing) λ¬Έμ œκ°€ μƒκΈ°κ²Œ λœλ‹€.
λΈŒλΌμš°μ €λŠ” 1개의 λ„λ©”μΈμ—μ„œ λ‹€λ₯Έ 도메인을 ν˜ΈμΆœν• λ•Œ,
λ‹€λ₯Έ λŒ€μƒκ³Ό μΈμ¦μ²΄κ³„λ‘œ 인식을 ν•˜κΈ° λ•Œλ¬Έμ—, 접근이 λΆˆκ°€λŠ₯ ν•˜λ‹€.
이것을 ν•΄κ²°ν•˜κΈ° μœ„ν•˜μ—¬ ν•˜λ‚˜μ˜ 동일 도메인 처럼 μΈμ‹ν•˜λ„λ‘ λ§Œλ“œλŠ” 것이 ν•„μš”ν•˜λ‹€.
이전에 μ„€λͺ…ν•˜μ˜€λ“―이 Netflix Zuul을 μ‚¬μš©ν•œ API Gateway둜 CORS문제λ₯Ό ν•΄κ²°ν• μˆ˜μžˆλ‹€.

User Interface Design

  • Responsive Web

μ½”λ“œλ₯Ό μ—¬λŸ¬λ²ˆ λ§Œλ“€μ§€ μ•Šκ³ , ν•˜λ‚˜μ˜ μ½”λ“œλ‘œ ν™”λ©΄μ˜ μ‚¬μ΄μ¦ˆμ— λ§ˆμΆ”κ³ ,
Android λ‚˜ IOS ꡬ뢄 없이 ν•œλ²ˆμ— μž¬μ‚¬μš© ν•  수 μžˆλ„λ‘ κ΅¬μ„±ν•˜λŠ” 방식

  • Material Design

μ—¬λŸ¬κ°€μ§€ λ‹¨λ§μ˜ νŠΉμ„±μ„ 타지 μ•Šκ³ , μ‚¬μš©μ„±μ„ μ’‹κ²Œ ν•˜λŠ” Design 방식

VueJS같은 κ²½μš°λŠ” μƒνƒœκ³„κ°€ 잘 λ§Œλ“€μ–΄μ Έ μžˆμ–΄μ„œ Material Design 을 μ“°κ² λ‹€λŠ” μ–ΈκΈ‰κ³Ό, Tag λ“€μ˜ μœ ν˜•λ“€λ§Œ μ•Œκ³ μžˆμœΌλ©΄ μžλ™ λ ˆμ΄μ•„μ›ƒμœΌλ‘œ λ””μžμΈμ΄ λ˜μ–΄ νŽΈν•˜κ²Œ μ‚¬μš© ν•  μˆ˜μžˆλ‹€.

⚠️ **GitHub.com Fallback** ⚠️