제로부터 빌드까지: 단계별 가이드
ìŽ ì£Œì ììë Lino CLI륌 íë¡ì íž êµ¬ì¶ì 죌ì ëêµ¬ë¡ ì¬ì©íë ëšê³ë³ ì€ì© ê°ìŽë륌 ì ê³µí©ëë€. ì€ì¹ ë° ìŽêž° 구ì±ë¶í° ìë¹ì€, 몚ë ë° ìí°í° ìì±, ìŽë²€íž, 백귞ëŒìŽë ìì , ë§ìŽê·žë ìŽì , Docker ìŽë¯žì§ ë¹ë ë° ë²ì êŽëЬì ê°ì ê³ êž êž°ë¥ê¹ì§ ë€ë£¹ëë€.
목íë CLI ëª ë ¹ìŽ ì€ì ê°ë° íëŠì ìŽë»ê² íµí©ëëì§ ë³Žì¬ì£Œë ê²ì ëë€ â ëšìí ëìŽíë ê²ìŽ ìëëŒ ê° ì íì ìŽì , ìë ìì±ëë í목 ë° ìí€í ì²ì ìí¥ê¹ì§ ì€ëª í©ëë€.
ê° ëª ë ¹ìŽì ë³ëì 묞ìê° ìëëŒë, ì¬êž°ìë ëìì ëê¹ì§ì 곌ì ì 볌 ì ììµëë€ â ë°ë³µ ìì ìê°ì ì ìœíê³ ìŒêŽì± ìê³ í ì€íž ê°ë¥í ìœë륌 ì ì§íë ì¬í ê°ë¥í ë¡ëë§µì ëë€.
ê°ìŽë ì ë°ì ê±žì³ Linoìì ì ì©ëë êž°ì ê°ë (ì: CQRS, TypedResults, Source Generators, Outbox Pattern)ì ì€ëª íê³ , ëª ë ¹ìŽ ìì 륌 볎ì¬ì£Œë©°, ë²ì êŽëЬ, ë°°í¬ ë° ì§ìì íµí©ì ìí ëªšë² ì¬ë¡ë¥Œ ìëŽí©ëë€.
Lino CLI ì€ì¹ ë° êµ¬ì±
Lino CLIë¡ ìì ì ììíë 첫 ë²ì§ž ëšê³ë ê°ë° í겜ì ë구륌 ì€ì¹íë ê²ì ëë€. ìŽ ë구ë dotnet ì ì ëêµ¬ë¡ ë°°í¬ëë¯ë¡, 컎íší°ì 몚ë .NET íë¡ì ížìì ì¬ì©í ì ììµëë€.
ëšê³ 1: ì€ì¹
Lino CLI륌 ì€ì¹(ëë ì ë°ìŽíž)íë €ë©Ž í°ë¯žëìì ë€ì ëª ë ¹ìŽë¥Œ ì€ííìžì:
dotnet tool install --global Tolitech.Lino
ì€ì ì°žê³ ì¬í:
- ìŽë¯ž ì€ì¹ë ë²ì ìŽ ìë 겜ì°,
dotnet tool update --global Tolitech.Lino륌 ì¬ì©íì¬ ì ë°ìŽíží ì ììµëë€. - CLI ëª
ë ¹ìŽ
linoê° ì¬ë°ë¥Žê² ìëíë €ë©Ž .NET ì ì ë구 ëë í ëŠ¬ê° ìì€í PATHì í¬íšëìŽ ìëì§ íìžíìžì.
ëšê³ 2: ìžìŽ ì€ì
ì€ì¹ í, CLIê° ë©ìì§, í롬ííž ë° ë¡ê·žìì ì¬ì©í ìžìŽ(ëë 묞í)륌 ì€ì íë ê²ìŽ ê¶ì¥ë©ëë€:
lino preferences culture set
ì¬ì© ê°ë¥í ìžìŽ ì€ìì ì ííëŒë ë©ìì§ê° íìë©ëë€. ìŽ ì€ì ì 몚ë ì§ì¹šê³Œ í롬íížê° ì íí ìžìŽë¡ ìŒêŽëê² íìëëë¡ í©ëë€.
ëšê³ 3: ìžìŠ ë° ë±ë¡
ê³ êž í í늿, Docker ìŽë¯žì§ ê²ì, ìžë¶ ìë¹ì€ íµí© ë± Linoì 몚ë êž°ë¥ì ì¡ìžì€íë €ë©Ž ìžìŠìŽ íìí©ëë€.
- ê³ì ìŽ ìë 겜ì°, ë€ì ëª ë ¹ìŒë¡ ë±ë¡íìžì:
lino user register
- ìŽë¯ž ê³ì ìŽ ìë 겜ì°, ë€ì ëª ë ¹ìŒë¡ ë¡ê·žìžíìžì:
lino auth login
ì€ëª : CLIë ìžìŠ í í°ì ë¡ì»¬ì ì ì¥íì¬ ë³Žížë 늬ìì€ì ì ê·Œíë ëª ë ¹ì ë§€ë² ë¡ê·žìžíì§ ìê³ ë ì€íí ì ìê² í©ëë€.
ëšê³ 4: íìž
ì€ì¹ì ìžìŠìŽ ì±ê³µì ìŒë¡ ìë£ëìëì§ íìžíë €ë©Ž ë€ìì ì€ííìžì:
lino --version
ëª ë ¹ìŽê° ì€ì¹ë ë²ì ì ë°íí멎, ìŽì íë¡ì ížìì Lino CLI륌 ì¬ì©í ì€ë¹ê° ë ê²ì ëë€.
MyApp íë¡ì íž ìì±
ìŽ ëšê³ììë Lino CLI륌 ì¬ì©íì¬ íë¡ì ížì ìŽêž° 구조륌 ìì±í©ëë€. ìŽ íë¡ì ížë ìë¹ì€, 몚ë, íë¡ ížìë ë° ìŽë²€íž íµí©ì ìì±ì 볎ì¬ì£Œë êž°ë°ìŒë¡ ì¬ì©ë©ëë€.
ëšê³ 1: ìì± ëª ë ¹ ì€í
ì íë¡ì ížë¥Œ ìì±íë €ë©Ž í°ë¯žëìì ë€ì ëª ë ¹ì ì€ííìžì:
lino project new
CLIê° ëšê³ë³ë¡ ìëŽíë©° ë€ì곌 ê°ì ì 볎륌 ìì²í©ëë€:
- íë¡ì íž ìŽëŠ: ì¬êž°ìë
MyAppì ì¬ì©íì§ë§, ìíë ë€ë¥ž ìŽëŠì ì íí ì ììµëë€; - ì¶ê° êž°ë¥: ìœë ë¶ìêž°, ë¶ì° ìºì, ë¹ëêž° ìŽë²€íž ì§ì ë±.
ëšê³ 2: íµì¬ êž°ë¥ êµ¬ì±
ìŽ íë¡ì ížììë ë€ì êž°ë¥ì ì²ìë¶í° íì±ííë ê²ì ê¶ì¥í©ëë€:
- ìœë ë¶ìêž°: ìœëê° ëªšë² ì¬ë¡ì ìŒêŽë íì€ì ë°ë¥Žê³ ìëì§ íìžíì¬ ìŒë°ì ìž êµ¬í ì€ë¥ë¥Œ ë°©ì§;
- ë¶ì° ìºì: ì¬ë¬ ìë¹ì€ í겜ìì ì í늬ìŒìŽì ì±ë¥ í¥ì, ë¶íìí ë°ìŽí°ë² ìŽì€ ì¡°í ë°©ì§;
- ë¹ëêž° íµì : ìŽë²€ížì í륌 ì¬ì©íì¬ ìë¹ì€ ê° íµí©ì íì±ííê³ , íì¥ì±ê³Œ ê²°í©ë ë¶ëŠ¬ë¥Œ 볎ì¥.
ìŽ íë¡ì ížìì ìŽë¬í 몚ë ìµì ì íì±ííë ê²ìŽ ì€ìí©ëë€. ì¬ë¬ ìë¹ì€ê° íµí© ìŽë²€ížë¥Œ íµíŽ íµì íêž° ë묞ì ëë€. ìŽë¥Œ íµíŽ Lino륌 ì¬ì©íì¬ ëªšëí ë° ë¶ì° ìì€í ì 구ì±íë ë°©ë²ì ìŽíŽí ì ììµëë€.
ëšê³ 3: ìì±ë 구조
ëª ë ¹ ì€í곌 êž°ë¥ êµ¬ì±ì ìë£í멎 CLIê° íë¡ì ížì ìŽêž° 구조륌 ìì±í©ëë€. 구조ìë ë€ììŽ í¬íšë©ëë€:
- ìë¹ì€ ë° ëªšë íŽë;
- íë¡ ížìë í í늿(ì ì© ê°ë¥ ì);
- ìºì, ìŽë²€íž ë° íµí©ì ìŽêž° ì€ì ;
- 컎íìŒ ì€ë¹ê° ë ì룚ì íìŒ(.slnx)곌 íë¡ì íž íìŒ(.csproj).
ìŽì MyApp íë¡ì ížê° ìë¹ì€, 몚ë, ìí°í° ë° íë¡ ížìë륌 ì¶ê°í ì€ë¹ê° ìë£ëììµëë€. ìŽë ë€ì ëšê³ìì 구ì±ë©ëë€.
íë¡ ížìë ì¶ê°
ìŽì ìì€í ì ìží°íìŽì€ìž íë¡ ížìë륌 ìì±íê² ìµëë€. ìŽë Backofficeë¡ ì¬ì©ë©ëë€. ìŽ íë¡ ížìëë ê³µê° ì í늬ìŒìŽì ìŽ ìëëŒ, êŽëЬìì ë§€ëì ê° ì í, 칎í ê³ ëŠ¬, ì¬ê³ , íë§€ ë° êž°í ìì€í ì 볎륌 êŽëЬí ì ìë ëŽë¶ ë구ì ëë€.
1ëšê³: ìì± ëª ë ¹ ì€í
íë¡ì ížì ìë¡ìŽ íë¡ ížìë륌 ì¶ê°íë €ë©Ž í°ë¯žëìì ë€ì ëª ë ¹ìŽë¥Œ ì¬ì©íìžì:
lino webapp new
íë¡ìžì€ ì€ì CLIë ëª ê°ì§ ì 볎륌 ìì²í©ëë€. ì륌 ë€ìŽ:
- ì¹ ì í늬ìŒìŽì
ìŽëŠ: ìŽ ìì ììë
Backoffice륌 ì¬ì©í©ëë€;
2ëšê³: ìì±ë 구조
íë¡ìžì€ê° ëë멎 CLIë WebApps/Backoffice íŽë ìì íë¡ ížìëì ìŽêž° 구조륌 ìì±í©ëë€.
Ʞ볞 구조ìë ë€ììŽ í¬íšë©ëë€:
- ì í늬ìŒìŽì ì íìŽì§, 컎í¬ëíž ë° ìë¹ì€ì© íŽë;
- íë¡ì íž ìë¹ì€ì API륌 ìë¹íêž° ìí HTTP íŽëŒìŽìžíž;
- ìŽêž° í í늿;
- ìžìŠ, ê¶í ë¶ì¬ ë° ìì€í ìŽë²€ížì íµí©íêž° ìí ì€ì íìŒ.
ì€ìí ì°žê³ ì¬í
- íë¡ ížìëë ì íë ìë¹ì€ ë° ëªšëì ìëìŒë¡ íµí©ëìŽ, Linoìì ìì±ë API륌 íµíŽ ì í, 칎í ê³ ëŠ¬ ë° íë§€ ë°ìŽí°ë¥Œ ì§ì ìë¹í ì ììµëë€.
- ì¬ë¬ ê°ì íë¡ ížìë륌 ìì±í ìë ììµëë€. ì륌 ë€ìŽ, êŽëЬìì©(Backoffice)곌 ê³µê°ì©(Site)ì ëìŒí íë¡ìžì€ë¡ ë§ë€ ì ììµëë€.
íë¡ ížìëê° ìì±ë멎, ìŽì ìŽ ì í늬ìŒìŽì ì ë°ìŽí°ì ë¹ìŠëì€ ê·ì¹ì ì ê³µí ìë¹ì€ì 몚ëì ìì±í ì€ë¹ê° ìë£ë©ëë€.
ìë¹ì€ ë° ëªšë ìì±
ìŽ ëšê³ììë ì í늬ìŒìŽì ì 구ì±í ìë¹ì€ì 몚ëì 구ì¶í©ëë€. 목íë 몚ëíëê³ íì¥ ê°ë¥í ìí€í ì²ë¥Œ ë§ë€ìŽ ì í, 칎í ê³ ëŠ¬, ì¬ê³ , íë§€, 믞ëìŽ ë± ìì€í ì ë€ìí ìììŽ ë 늜ì ìŒë¡ ë°ì í ì ìëë¡ í멎ì ìì§ë ¥ì ì ì§íê³ ì ì§ë³Žì륌 ì©ìŽíê² íë ê²ì ëë€.
1ëšê³: ìë¹ì€ ì ì
뚌ì ë€ì곌 ê°ì ìë¹ì€ë¥Œ ìì±í©ëë€. ê° ìë¹ì€ë ëª íí ì± ìì ê°ì§ëë€:
- Catalog (몚ëí) â ì í, 칎í ê³ ëŠ¬ ë° ê°ê²© êŽëЬ;
- Sales â íë§€ ë° ì£Œë¬ž ì²ëЬ;
- Stock â ì¬ê³ ë° ì¬ê³ ìŽë êŽëЬ;
- Security â ìžìŠ, ê¶í ë¶ì¬ ë° ì¬ì©ì êŽëЬ.
ì ìë¹ì€ë¥Œ ìì±íë €ë©Ž ë€ì ëª ë ¹ì ì€ííìžì:
lino service new
ëª ë ¹ ì€í ì€ CLIë ë€ìì ìì²í©ëë€:
- ìë¹ì€ ìŽëŠ: ì:
Catalog; - ë°ìŽí°ë² ìŽì€: íë¡ì ížì ê°ì¥ ì í©í êž°ì ì í (SQL Server, PostgreSQL ë±);
2ëšê³: ìë¹ì€ ëŽ ëªšë ìì±
몚ë ìë¹ì€ê° 몚ëíë íìë ììµëë€. ì°ëЬ íë¡ì ížììë Catalog ìë¹ì€ë§ 몚ëì ê°ê² íì¬, ëšžì²ë€ìŽì§ê³Œ ê°ê²© ì± ì 곌 ê°ì ì± ìì ë¶ëЬí©ëë€.
Catalog ìë¹ì€ì ë€ì 몚ëì ì ìíìµëë€:
- Merchandising â ì í ë° ì¹Ží ê³ ëŠ¬ êŽëЬ;
- Pricing â ê°ê²©, íë¡ëªšì ë° ë³ê²œ ìŽë ¥ êŽëЬ.
몚ëì ìì±íë €ë©Ž ë€ì ëª ë ¹ì ì€ííìžì:
lino module new
몚ëí ìë¹ì€ Catalog ëŽìì ìíë ë§íŒ 몚ëì ìì±í ì ììµëë€. ëí, ë³µì¡ëì ë°ëŒ ìŒë¶ 몚ëì í¥í ë 늜 ìë¹ì€ê° ë ìë ììµëë€. ì¬êž°ì ì ìë 구ë¶ì êµì¡ì ììë¡, 몚ëíë ì¡°ì§ì ììì ëë€.
íë¡ì íž ìµì¢ 구조
ìë¹ì€ì 몚ë ìì± í, ì룚ì 구조ë ë€ì곌 ì ì¬íŽìŒ í©ëë€:
MyApp/
âââ src/
âââ Aspire/
âââ Integrations/
âââ Services/
â âââ Catalog/
â â âââ Modules/
â â â âââ Merchandising/
â â â âââ Pricing/
â â âââ MyApp.Catalog.Host
â â âââ MyApp.Catalog.Infrastructure
â âââ Sales/
â âââ Security/
â âââ Shared/
â âââ Stock/
âââ WebApps/
âââ Backoffice/
â âââ Services/
â â âââ Catalog/
â â âââ Sales/
â â âââ Security/
â â âââ Stock/
â âââ MyApp.WebApp.Backoffice
â âââ MyApp.WebApp.Backoffice.Client
âââ Shared/
âââ MyApp.WebApp.Shared
âââ tests/
âââ Services/
âââ Catalog/
â âââ Merchandising/
â âââ Pricing/
âââ Sales/
âââ Security/
âââ Shared/
âââ Stock/
구조 ì€ëª :
Services/: ìì€í ì 몚ë ìë¹ì€ í¬íš, ê° ìë¹ì€ë ë 늜ì ìŽë©° ì첎 ë¹ìŠëì€ ë¡ì§, ìžíëŒ ë° ížì€í í¬íš;Modules/: 몚ëí ìë¹ì€ ëŽ íŽë, í¹ì êž°ë¥ì 구ì±íê³ ìœë ìì§ë ¥ ì ì§;WebApps/: ìì€í 곌 ì°ê²°ë íë¡ ížìë, ìë¹ì€ì íµí©ëš;Shared/: ìë¹ì€ì íë¡ ížìë ê° ê³µì ëŒìŽëžë¬ëЬ ë° ëŠ¬ìì€;tests/: ìë¹ì€ ë° ëªšëë³ ëšì í ì€íž ë° íµí© í ì€íž.
ìŽë¬í 몚ëí 구조륌 íµíŽ ê° í ëë ê°ë°ìë ìì€í ì ë€ë¥ž ë¶ë¶ì ë 늜ì ìŒë¡ ìì í ì ììŽ íì¥ì±, ì ì§ë³Žì ë° í ì€ížê° ì©ìŽíŽì§ëë€.
ìžìŠ ë° ê¶í ì¶ê°
ìžìŠ(Authentication)곌 ê¶í(Authorization)ì 몚ë íë ìì€í ìì íì ììì ëë€. Lino CLIììë ìŽë¥Œ íë¡ì ížì ì¶ê°íë ê²ìŽ ìœê³ ë¹ ëŠ ëë€.
1ëšê³: ìžìŠ ëª ë ¹ ì€í
ìžìŠ ë° ê¶í êž°ë¥ì ì¶ê°íë €ë©Ž ë€ì ëª ë ¹ì ì¬ì©íìžì:
lino features auth add
CLIë ë€ì ëšê³ë¡ ìëŽí©ëë€:
- ìë¹ì€ ëë 몚ë ì í: ìžìŠ êŽë š ìí°í©ížë¥Œ ì€ì¹í ìì¹ë¥Œ ì§ì íŽìŒ í©ëë€. ìì íë¡ì ížììë ìì€í 볎ì ë¡ì§ì ì€ììì êŽëЬíë Security ìë¹ì€ë¥Œ ì¬ì©í©ëë€;
- ì¶ê° ì€ì : ì¬ì©ì, ìí , ê¶í í ìŽëž ìì± ë° ì ê·Œ ì ì± ì€ì .
2ëšê³: ìì±ë 구조
ëª ë ¹ ì€í í, Security ìë¹ì€ìë ë€ì곌 ê°ì íìŒê³Œ íŽëê° í¬íšë©ëë€:
- Entities: ì¬ì©ì, ìí ë° ê¶í íŽëì€;
- Infrastructure: ë°ìŽí°ë² ìŽì€ êµ¬ì± ë° í ìŽëž ìì±ì ìí ë§ìŽê·žë ìŽì ;
- Application: ìžìŠ ìë¹ì€, ì¬ì©ì êŽëЬ ë° ì격 ìŠëª ê²ìŠ;
- API/Host: ë¡ê·žìž, ë¡ê·žìì, ë±ë¡ ë° ìí êŽëЬ ìëí¬ìžíž.
ìŽ ì€ì ìŒë¡ ì í늬ìŒìŽì ì ê°ë ¥í ìžìŠê³Œ ìžë°í ì ê·Œ ì ìŽë¥Œ ê°ì¶ê² ëìŽ, ì¬ë¬ ì¬ì©ìì ë€ìí ê¶í ìì€ì ì§ìí ì ììµëë€.
백귞ëŒìŽë ìì ì¶ê°
Lino CLI륌 ì¬ì©íì¬ êµ¬ì¶íë ë¶ì°í 몚ëì ìì€í ììë 몚ë ìë¹ì€ê° ì§ì íµì íì§ ììµëë€. ì 볎 êµíì ìŒêŽì±ê³Œ ì 뢰ì±ì 볎ì¥íêž° ìíŽ íµí© ìŽë²€ížë¥Œ ì¬ì©í©ëë€. ê·žë¬ë ìŽë¬í ìŽë²€ížë¥Œ íšìšì ìŽê³ ë¹ëêž°ì ìŒë¡ ì²ëЬíë €ë©Ž 백귞ëŒìŽë ìì ìŽ íìí©ëë€.
Linoë Outbox íšíŽì ì¬ì©íì¬ ìë¹ì€ìì ìì±ë 몚ë ë©ìì§ê° ì ì¡ëêž° ì ì ì 뢰í ì ìê² êž°ë¡ëëë¡ ë³Žì¥í©ëë€. ìŽë¥Œ íµíŽ ì°ëЬë ë€ìì ìíí ì ììµëë€:
- ìë¹ì€ ì¥ì ë ì¬ìì ì ìŽë²€íž ìì€ ë°©ì§;
- ëìŒí ë©ìì§ê° í ë²ë§ ì ì¡ëëë¡ ë³Žì¥;
- ì ì¡ ì€íš ì ë©ìì§ ì¬ì²ëЬ íì©;
- ìŽë²€íž ì²ëŠ¬ë¥Œ ì í늬ìŒìŽì ì 죌ì ë¡ì§ê³Œ ë¶ëЬíì¬ ì±ë¥ê³Œ íì¥ì± í¥ì.
1ëšê³: ëª ë ¹ ì€í
íë¡ì ížì 백귞ëŒìŽë ìì ì§ìì ì¶ê°íë €ë©Ž ë€ì ëª ë ¹ì ì€ííìžì:
lino features background-job add
CLIë 백귞ëŒìŽë ìì ì ì€ì¹í ìë¹ì€ë¥Œ ì ííëŒê³ ìì²í©ëë€. ìŒë°ì ìŒë¡ ìŽë²€íž ìì±ì ì€ììì êŽëЬíë Catalog ëë Sales ìë¹ì€ë¥Œ ì íí©ëë€.
2ëšê³: ì€í 구ì±
êµ¬ì± ì€ì ë€ìì ì ìí ì ììµëë€:
- ê²ì¬ ê°ê²©: 백귞ëŒìŽë ìì ìŽ ìë¡ìŽ ë©ìì§ë¥Œ íìžíêž° ìíŽ Outbox í ìŽëžì íìžíë ë¹ë륌 ê²°ì í©ëë€. ê°ê²©ìŽ ë묎 ì§§ìŒë©Ž 늬ìì€ ì¬ì©ëìŽ ìŠê°íê³ , ë묎 Ꞟ멎 ìŽë²€íž ì ë¬ìŽ ì§ì°ë ì ììµëë€;
- í ë²ì ì²ëЬí ë ìœë ë°°ì¹: ì€íë¹ ìœê³ ì ì¡í ìŽë²€íž ì륌 ì ìŽí©ëë€. í° ë°°ì¹ë ì±ë¥ì í¥ììí€ì§ë§ ë ë§ì ë©ëªšëЬì ì²ëЬ ë¥ë ¥ìŽ íìí©ëë€;
- ì¬ìë ì ì± : ë©ìì§ ì ì¡ ì€íš ì, ìì ìŽ ì¬ì ì¡ì ìëí íì륌 ì€ì í ì ììµëë€.
ìŽë¬í ë§€ê°ë³ìë ìì€í ê·ëªš, êž°ê³ ì±ë¥, ìì ìŽë²€íž ìì ë°ëŒ ë¬ëŒì§ëë€.
3ëšê³: ìì±ë 구조
êµ¬ì± í, íë¡ì ížìë ê° ìë¹ì€ì Outbox í ìŽëžìì ë©ìì§ë¥Œ ì²ëЬí ì€ë¹ê° ë 백귞ëŒìŽë ìì ìŽ ìì±ë©ëë€.
ìŽë¥Œ íµíŽ ëªšë íµí© ìŽë²€ížê° ì 뢰í ì ìê³ íšìšì ìŒë¡ ì²ëЬëë©°, ì¬ë¬ ìë¹ì€ì 몚ëìŽ ë¹ëêž°ì ìŒë¡ íµì í ì ììŽ ë©ìž ìì€í ì±ë¥ì ìí¥ì ì£Œì§ ììµëë€.
ìí°í° ë° ìŽê±°í ìì±
ìŽ ì¹ì ììë ì í늬ìŒìŽì ì ìí°í°, ìŽê±°í, ê° ê°ì²Ž ì€ê³ë¥Œ ììží ì€ëª íê³ , ê° íëª©ìŽ ìŽë€ ìë¹ì€ì 몚ëìì ìì±ëëì§ ë³Žì¬ì€ëë€.
1. Category ìí°í° ìì±
ìí°í°ë¥Œ ìì±íë €ë©Ž ë€ì ëª ë ¹ìŽë¥Œ ì¬ì©íìžì:
lino entity new
íŽë¹ ìí°í°ë Catalog ìë¹ì€ì Merchandising 몚ëì ë€ì êµ¬ì¡°ë¡ ìì±ë©ëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬âââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ â PK â FK â Property name â Type â Length â Required â Auto-increment â ââââââŒâââââŒââââââââââââââââŒâââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â x â â Id â Guid â â x â x â ââââââŒâââââŒââââââââââââââââŒâââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Name â string â 50 â x â â ââââââŽâââââŽââââââââââââââââŽâââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
2. Product ìí°í° ìì±
ë€ììŒë¡, ëìŒí ìë¹ì€ì 몚ëìì Product ìí°í°ë¥Œ ìì±íë©° ê° ê°ì²Žì ìŽê±°íì í¬íší©ëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬ââââââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ â PK â FK â Property name â Type â Length â Required â Auto-increment â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â x â â Id â Guid â â x â x â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Name â string â 100 â x â â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Description â string â 500 â x â â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Price â decimal â â x â â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â x â CategoryId â Category â â x â â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Dimensions â ValueObject â â â â ââââââŒâââââŒââââââââââââââââŒââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Status â Enum â â x â â ââââââŽâââââŽââââââââââââââââŽââââââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
2.1 ê° ê°ì²Ž ProductDimension ìì±
ìŽ ê° ê°ì²Žë ì íì í¬êž°ë¥Œ ëíë ëë€:
âââââââââââââââââ¬ââââââââââ¬âââââââââ¬âââââââââââ â Property name â Type â Length â Required â âââââââââââââââââŒââââââââââŒâââââââââŒââââââââââ†â Width â decimal â â x â âââââââââââââââââŒââââââââââŒâââââââââŒââââââââââ†â Height â decimal â â x â âââââââââââââââââŒââââââââââŒâââââââââŒââââââââââ†â Depth â decimal â â x â âââââââââââââââââŽââââââââââŽâââââââââŽâââââââââââ
2.2 ìŽê±°í ProductStatus ìì±
ìŽ ìŽê±°íì ì í ìí륌 ì ìí©ëë€:
âââââââââ¬âââââââââââââââ¬âââââââââââââââ â Value â Name â Display Name â âââââââââŒâââââââââââââââŒââââââââââââââ†â 1 â Active â Active â âââââââââŒâââââââââââââââŒââââââââââââââ†â 2 â Inactive â Inactive â âââââââââŒâââââââââââââââŒââââââââââââââ†â 3 â Discontinued â Discontinued â âââââââââŽâââââââââââââââŽâââââââââââââââ
3. ìë¡ìŽ ìì± ì¶ê°
íë¡ì ížê° ë°ì íšì ë°ëŒ Ʞ졎 ìí°í°ë¥Œ ížì§íì¬ ìë¡ìŽ ìì±ì ì¶ê°í ì ììµëë€.
ì륌 ë€ìŽ, Product ìí°í°ì ìŽë¯žì§ 목ë¡ì ì¶ê°í©ëë€:
lino entity edit
List<ProductImage> íì
ì Images ìì±ì ìì±í멎 ë€ì êµ¬ì¡°ê° ë§ë€ìŽì§ëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬âââââââââââââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ â PK â FK â Property name â Type â Length â Required â Auto-increment â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â x â â Id â Guid â â x â x â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Name â string â 100 â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Description â string â 500 â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Price â decimal â â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â x â CategoryId â EntityId â â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Dimensions â ValueObject â â â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Status â Enum â â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â x â Images â List<ProductImage> â â â â ââââââŽâââââŽââââââââââââââââŽâââââââââââââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
3.1 ProductImage ìí°í° ìì±
ìŽ ìí°í°ë Product ì 귞늬거ížì ìíë©° ë€ì 구조륌 ê°ìµëë€:
ââââââ¬âââââ¬ââââââââââââââââ¬âââââââââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ â PK â FK â Property name â Type â Length â Required â Auto-increment â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â x â â Id â Guid â â x â x â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â x â ProductId â EntityId â â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â UploadDate â DateTimeOffset â â x â â ââââââŒâââââŒââââââââââââââââŒâââââââââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Image â File â â x â â ââââââŽâââââŽââââââââââââââââŽâââââââââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
4. ë€ë¥ž ìë¹ì€ì© ìí°í° ìì±
Sales ìë¹ì€ììë ProductSnapshot ìí°í°ë¥Œ ìì±íë©°, ìŽ ìí°í°ë íµí© ìŽë²€ížë¥Œ íµíŽ ë°ìŽí°ë¥Œ ì±ìëë€.
ìë Product ìí°í°ì Idë Catalog ìë¹ì€ìì ì€ë¯ë¡, ì¬êž°ìë ìë ìŠê°ë ì ììµëë€.
ââââââ¬âââââ¬ââââââââââââââââ¬ââââââââââ¬âââââââââ¬âââââââââââ¬âââââââââââââââââ â PK â FK â Property name â Type â Length â Required â Auto-increment â ââââââŒâââââŒââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â x â â Id â Guid â â x â â ââââââŒâââââŒââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Name â string â 100 â x â â ââââââŒâââââŒââââââââââââââââŒââââââââââŒâââââââââŒâââââââââââŒââââââââââââââââ†â â â Price â decimal â â x â â ââââââŽâââââŽââââââââââââââââŽââââââââââŽâââââââââŽâââââââââââŽâââââââââââââââââ
ì°žê³ : Sales ìë¹ì€ì ProductSnapshotìë íì íëë§ ë³µì ëììµëë€. Customer, Order, StockItemì ê°ì ì¶ê° ìí°í°ë 묞ì륌 ëšìííêž° ìíŽ ì¬êž°ì ììží ë€ë£šì§ ììµëë€.
ìŽë²€íž ë° íŽë¹ ížë€ë¬ ìì±
ìŽì ì¹ì
ì ë³µìµí멎, 몚ëí ìë¹ì€ Catalog.Merchandisingìì Product, Category, ProductImage ìí°í°ë¥Œ ìì±íê³ , ìë¹ì€ Salesììë ProductSnapshot ìí°í°ë¥Œ ìì±íìµëë€.
ìŽì ëë©ìž ìŽë²€ížì íµí© ìŽë²€ížë¥Œ ìì±í ì°šë¡ì ëë€. 목íë Catalog ìë¹ì€ìì ì íì ìì±íê±°ë ì ë°ìŽíží ë, ìŽë¬í ë³ê²œ ì¬íìŽ Sales ë° Stock ê°ì ìë¹ ìë¹ì€ë¡ ë³µì ëëë¡ íë ê²ì ëë€.
1. ëë©ìž ìŽë²€íž ìì±
첫 ë²ì§ž ëšê³ë ë€ì ëª
ë ¹ìŽë¥Œ ì¬ì©íì¬ ëë©ìž ìŽë²€íž ProductCreated ë° ProductUpdated륌 ìì±íë ê²ì
ëë€:
lino event new
ìì± ê³Œì ìì ìŽë²€ížë¥Œ ížë€ë¬ì ì°ê²°íê³ ëìì íµí© ìŽë²€íž ížëŠ¬ê±°ë¥Œ ì€ì í ì ììµëë€. ìŽë¥Œ íµíŽ ì 첎 íìí íëŠ ìì±ìŽ ì€ìíë©ëë€.
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¬âââââââââââââââââââââââââââââââââ â Question â Answer â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select a service: â Catalog â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select a module: â Merchandising â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select a entity: â Product â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select the event type: â Domain Event â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Enter the name of the event: â ProductCreated â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Do you want to create an associated event handler? â Yes â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Trigger a integration event? â Yes â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Choose the integration event to be triggered: â (Create new integration event) â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Enter the name of the event: â ProductCreated â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Which model will be used for this integration event? â Creation model â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŽâââââââââââââââââââââââââââââââââ
ëìŒíê² ProductUpdated ìŽë²€ížë ìì±í©ëë€:
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¬âââââââââââââââââââââââââââââââââ â Question â Answer â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select a service: â Catalog â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select a module: â Merchandising â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select a entity: â Product â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Select the event type: â Domain Event â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Enter the name of the event: â ProductUpdated â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Do you want to create an associated event handler? â Yes â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Trigger a integration event? â Yes â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Choose the integration event to be triggered: â (Create new integration event) â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Enter the name of the event: â ProductUpdated â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ†â Which model will be used for this integration event? â Update model â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââŽâââââââââââââââââââââââââââââââââ
ë°ëŒì ë€ì곌 ê°ìŽ ë©ëë€:
- ìì±ë ëë©ìž ìŽë²€íž (
ProductCreatedë°ProductUpdated); - íŽë¹ ëë©ìž ìŽë²€íž ížë€ë¬;
- ëë©ìž ìŽë²€íž ížë€ë¬ì ìíŽ Outboxì ìë ë±ë¡ë íµí© ìŽë²€íž.
2. íµí© ìŽë²€íž ížë€ë¬ ìì±
ë€ì ëšê³ë ìŽë€ ìë¹ì€ê° íµí© ìŽë²€ížë¥Œ ìë¹í ì§ ì ìíë ê²ì ëë€. ìŽë¥Œ ìíŽ ë€ì ëª ë ¹ìŽë¥Œ ì¬ì©í©ëë€:
lino event-handler new
ìì± ê³Œì ìë ë€ììŽ í¬íšë©ëë€:
- ížë€ë¬ê° í¬íšë ìë¹ì€, 몚ë, ìí°í° ì í;
- ìë¹í íµí© ìŽë²€ížì íŽë¹ ìŽë²€ížê° ìŽë€ ìë¹ì€/몚ë/ìí°í°ìì ìëì§ ì í.
ì륌 ë€ìŽ, Sales ìë¹ì€ììë ProductCreatedì ProductUpdated ìŽë²€íž ížë€ë¬ë¥Œ ìì±íì¬ Catalog.Merchandising.Productìì ë°ìí ìŽë²€ížë¥Œ ìë¹í©ëë€:
ââââââââââââââââââââââââââââââââââââââââââââââ¬ââââââââââââââââââââ â Question â Answer â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select a service: â Sales â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select a entity: â ProductSnapshot â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event type: â Integration Event â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event's service to be consumed: â Catalog â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event's module to be consumed: â Merchandising â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event's entity to be consumed: â Product â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Choose the event to be consumed: â ProductCreated â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Enter the name of the event handler: â ProductCreated â ââââââââââââââââââââââââââââââââââââââââââââââŽââââââââââââââââââââ
ââââââââââââââââââââââââââââââââââââââââââââââ¬ââââââââââââââââââââ â Question â Answer â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select a service: â Sales â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select a entity: â ProductSnapshot â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event type: â Integration Event â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event's service to be consumed: â Catalog â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event's module to be consumed: â Merchandising â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select the event's entity to be consumed: â Product â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Choose the event to be consumed: â ProductUpdated â ââââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Enter the name of the event handler: â ProductUpdated â ââââââââââââââââââââââââââââââââââââââââââââââŽââââââââââââââââââââ
ìŽë ê² í멎 Sales ìë¹ì€ì ë ê°ì íµí© ìŽë²€íž ížë€ë¬ê° ìêž°ë©°, Catalog.Merchandisingìì ì€ë íµí© ìŽë²€ížì íìí íëë§ ìë¹í©ëë€. ìŽë¥Œ íµíŽ ë³µì ë í ìŽëžìë íµì¬ ë°ìŽí°ë§ ëšì ì ì¥ ê³µê°ê³Œ ì±ë¥ì ìµì íí ì ììµëë€.
ì¹ íìŽì§, API, Commands ë° Queries ìì±
Lino CLIì í° ì¥ì ì€ íëë ì¹ íìŽì§, API, Commands ë° Queries륌 ìëìŒë¡ íµí© ìì±í ì ììŽ ì 첎 ê°ë° íëŠì ëšìíí ì ìë€ë ì ì ëë€. ììíë €ë©Ž ë€ì ëª ë ¹ì ì€ííìžì:
lino page new
곌ì ì€ì ë€ìì ìííê² ë©ëë€:
- ë žì¶í ìë¹ì€, 몚ë ë° ìí°í° ì í;
- 목ë¡ì í¬íšë íë ì í;
- ëª©ë¡ íìŽì§(íìŽì§ë€ìŽì 귞늬ë) ë° ìì±/ížì§ íŒ ìë ìì±;
- íë¡ ížìëìì ì¬ì©í HttpClient íŽëì€ ìì±;
- íìí 몚ë REST API ìì±(POST, PUT, PATCH, DELETE, GET);
- Commands ë° Queriesì íŽë¹ Handlers ìì±, ë°ìŽí°ë² ìŽì€ì ì°ëíì¬ CRUD ì 첎 íëŠ ë³Žì¥.
ìŽ ëª ë ¹ì ì¬ì©í멎 ìží°íìŽì€, API ë° ë¹ìŠëì€ ë¡ì§ì ìëìŒë¡ ìì±íì§ ìê³ ë êž°ë¥ì ìž ì í늬ìŒìŽì ì ì»ì ì ììŒë©°, ìë¹ì€ ê° íì€ê³Œ ìŒêŽì±ì ì ì§í ì ììµëë€.
ìŽ íë¡ì ížììë ë€ì ìí°í°ì ëí íµí© íìŽì§ë¥Œ ìì±í ì ììµëë€:
- Catalog.Merchandising.
Category - Catalog.Merchandising.
Product - Sales.
ProductSnapshot
íìŽì§, API ë° Commands/Queries륌 ìì±í í, ì í늬ìŒìŽì ì íë¡ ížìëì ë°±ìë ê° ìì í ìíž ìì©ìŽ ê°ë¥íë©°, 몚ë ê²ìŠ, ëŒì°íž ë° ë°ìŽí° ì ì¥ìŽ Lino CLIì ìíŽ ìëìŒë¡ ì€ì ë©ëë€.
ë°ìŽí°ë² ìŽì€ ë§ìŽê·žë ìŽì ìì±
ìŽì 몚ë ìí°í°ê° ìì±ëììŒë¯ë¡, ì ìë 몚ëžì ë°ëŒ ë°ìŽí°ë² ìŽì€ë¥Œ ìì±íê±°ë ì ë°ìŽížíêž° ìíŽ ë§ìŽê·žë ìŽì ì ìì±í ìê°ì ëë€. Lino CLIë ìŽ ê³Œì ì ìëííë©°, Entity Frameworkì íµí©ëìŽ ì€í ê°ë¥í ì€í¬ëŠœížë¥Œ ìì±í©ëë€.
ì ë§ìŽê·žë ìŽì ì ìì±íë €ë©Ž ë€ì ëª ë ¹ì ì€ííìžì:
lino database migrations new
ì€í ì€ì ë€ìì ìííŽìŒ í©ëë€:
- ë§ìŽê·žë ìŽì ì ë°ì ìë¹ì€ì 몚ë ì í;
- ë§ìŽê·žë ìŽì ì ëí ì€ëª ì ë ¥, ì: "Initial migration".
âââââââââââââââââââââââââââââââââââââââââââââ¬ââââââââââââââââââââ â Question â Answer â âââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select a service: â Catalog â âââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Select a module: â Merchandising â âââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Current version of the service: â 0.1.0 â âââââââââââââââââââââââââââââââââââââââââââââŒâââââââââââââââââââ†â Provide a description for this migration: â Initial migration â âââââââââââââââââââââââââââââââââââââââââââââŽââââââââââââââââââââ
íìží멎 Lino CLIê° ë€ìì ìì±í©ëë€:
- ìë¹ì€ íì¬ ë²ì ì ì ë°ìŽí°ë² ìŽì€ ë§ìŽê·žë ìŽì ;
- íŽë¹ SQL ì€í¬ëŠœíž, Infrastructure.Persistence ë ìŽìŽì ìì¹, 겜ë¡: /scripts/<version>/<íìŒëª >;
- ìë¹ì€ êž°ë¡ì ë§ìŽê·žë ìŽì ë²ì ë±ë¡, ì¶ì ê°ë¥ì±ê³Œ ìŒêŽì± 볎ì¥.
ëªšë² ì¬ë¡:
- ë°ìŽí° ëªšëž ë³ê²œ ìë§ë€ ì ë§ìŽê·žë ìŽì ìì± (ì ìí°í°, ìì± ëë êŽê³ ë³ê²œ í¬íš);
- íë¡ëì ì ì ì©íêž° ì ì ìì±ë SQL ì€í¬ëŠœíž ê²í ;
- ë°ìŽí°ë² ìŽì€ ë²ì êŽëŠ¬ë¥Œ ì í늬ìŒìŽì ë²ì 곌 ëêž°ííì¬ ì¶©ë ë° ëêž°í 묞ì ë°©ì§.
ìŽ ê³Œì ì ë°ë¥Žë©Ž ë°ìŽí°ë² ìŽì€ê° íì Lino CLIìì ì ìë ëë©ìž 몚ëžê³Œ ìŒì¹íëë¡ ì ì§ëìŽ ì€ë¥ë¥Œ ì€ìŽê³ ì ì§ êŽëŠ¬ë¥Œ ëšìíí ì ììµëë€.
Docker ìŽë¯žì§ ìì±
í¹ì ë²ì ì ìœë ìì±ì ìë£íê³ í ì€ížë¥Œ ìííë©° íìí 몚ë ë¹ìŠëì€ ê·ì¹ì 구íí í, íë¡ì ížì ìë¹ì€ì ì¹ ì í늬ìŒìŽì ì ëí Docker ìŽë¯žì§ë¥Œ ìì±íì¬ ì»ší ìŽë ë ì§ì€ížëЬì ê²ìí ì ììµëë€.
Lino CLIë ë€ì ëª ë ¹ìŒë¡ ìŽ ê³Œì ì ê°ìíí©ëë€:
lino build
ì€íí멎 íë¡ì ížìì ì¬ì© ê°ë¥í 몚ë ìë¹ì€ì ì¹ ì í늬ìŒìŽì 목ë¡ê³Œ íì¬ ë²ì ì íìží ì ììµëë€:
Select the services or web applications you want to include in the build:
> [ ] Services
[ ] Catalog |0.1.0|
[ ] Sales |0.1.0|
[ ] Security |0.1.0|
[ ] Stock |0.1.0|
[ ] Web applications
[ ] Backoffice |0.1.0|
íë ìŽìì ìë¹ì€ì ì¹ ì í늬ìŒìŽì ì ì ííì¬ ëìì ìŽë¯žì§ë¥Œ ìì±í ì ììµëë€. ìíë í목ì 첎í¬íìžì.
ë€ììŒë¡ ìì±ë ìŽë¯žì§ì ë²ì ì ìŽë»ê² ì ë°ìŽíží ì§ ì ííŽìŒ í©ëë€. ì¬ì© ê°ë¥í ìµì ì ë€ì곌 ê°ìµëë€:
- íì¬ ë²ì ì ì§ â Ʞ졎 ë²ì ì ë³ê²œíì§ ìì;
- Patch â íšì¹ ë²ì ìŠê° (ì: 0.1.0 â 0.1.1);
- Minor â ë§ìŽë ë²ì ìŠê° (ì: 0.1.0 â 0.2.0);
- Major â ë©ìŽì ë²ì ìŠê° (ì: 0.1.0 â 1.0.0).
ìë¹ì€ ì í곌 ë²ì ìŠê° ë°©ë²ì ì§ì í멎, Lino CLIë ë€ìì ìíí©ëë€:
- ê° ìë¹ì€ì ì¹ ì í늬ìŒìŽì ìœë ë¹ë;
- íŽë¹ Docker ìŽë¯žì§ ìì±;
- ì§ì ë ë²ì ìŒë¡ íê·ž ì ì©;
- 컚í ìŽë ë ì§ì€ížëЬì ê²ìí ì ìëë¡ ìŽë¯žì§ ì ê³µ.
곌ì ìŽ ëë멎, 몚ë ìë¹ì€ì ì¹ ì í늬ìŒìŽì ìŽ ì íë 겜ì°, ìì±ë ìŽë¯žì§ë ë€ì곌 ê°ì 구조륌 ê°ìµëë€:
- my-app/services/catalog-host - tag: 0.1.0
- my-app/services/sales-api - tag: 0.1.0
- my-app/services/security-api - tag: 0.1.0
- my-app/services/stock-api - tag: 0.1.0
- my-app/webapps/backoffice - tag: 0.1.0
ì°žê³ : ìŽ ê³Œì ì ìœëì Docker ìŽë¯žì§ ë²ì ê°ì ìŒêŽì±ì 볎ì¥íì¬ ì¬ë¬ í겜ì ë°°í¬ì ì ì§ êŽëŠ¬ë¥Œ ì©ìŽíê² íë©°, ê° ìë¹ì€ê° ë 늜ì ìž ì»ší ìŽëìì 격늬ëìŽ ì€íë ì ìëë¡ í©ëë€.
ì í늬ìŒìŽì ìì ë²ì ìì±
ìë¹ì€ ëë ì¹ ì í늬ìŒìŽì ì ì ë²ì ì ìŠê°ìí€ë ê²ì Lino CLIìì ê°ëšíê³ ì€ì ì§ì€íë 곌ì ì ëë€. ë€ì ëª ë ¹ì ì€íí멎 ë©ëë€:
lino version bump
Docker ìŽë¯žì§ ìì±ê³Œ ë§ì°¬ê°ì§ë¡ ìŽ ëª ë ¹ì ì€íí멎 íë¡ì ížì 몚ë ìë¹ì€ì ì¹ ì í늬ìŒìŽì ìŽ ì 첎 목ë¡ìŒë¡ íìë©ëë€. ì íí íëª©ë§ ë²ì ìŽ ìŠê°íë©°, ëëšžì§ë ë³ê²œëì§ ììµëë€.
Select the services or web applications that will have version changes:
> [ ] Services
[ ] Catalog |0.1.0|
[ ] Sales |0.1.0|
[ ] Security |0.1.0|
[ ] Stock |0.1.0|
[ ] Web applications
[ ] Backoffice |0.1.0|
ìíë í목ì ì íí í, ë²ì ìŠê° ì íì ì ííëŒë ìì²ìŽ íìë©ëë€. ì¬ì© ê°ë¥í ìµì ì ë€ì곌 ê°ìµëë€:
- Patch â êž°ë¥ì ìí¥ì ì£Œì§ ìë ìì ìì ;
- Minor â ìŽì ë²ì 곌 ížíëë ìë¡ìŽ êž°ë¥ ì¶ê°;
- Major â ìŽì ë²ì 곌ì ížíì±ì 깚ëšëŠŽ ì ìë ë³ê²œ.
ìë¹ì€ì ì¹ ì í늬ìŒìŽì ì ë²ì ì ë€ìì ì§ì ì ìž ìí¥ì 믞칩ëë€:
- Docker ìŽë¯žì§ íê·ž;
- ë°ìŽí°ë² ìŽì€ ë§ìŽê·žë ìŽì ìŒë¡ ìì±ë ì€í¬ëŠœížë¥Œ ì ì¥íë íŽë;
- ëŠŽëŠ¬ìŠ êŽëЬ ë° íë¡ì íž íì€í 늬.
ìŽë¥Œ íµíŽ Lino CLI륌 ì¬ì©íì¬ ì¹ íë¡ì ížë¥Œ 구ì¶íë ë° íìí 몚ë íµì¬ ëª ë ¹ì ëí ëšê³ë³ ê°ìŽë륌 ë§ì¹©ëë€. ì€ì¹, ìë¹ì€, ìí°í°, ìŽë²€íž ë° íìŽì§ ìì±ë¶í° Docker ìŽë¯žì§ ìì± ë° ë²ì êŽëЬê¹ì§ í¬íšë©ëë€.
YouTube ì±ëì 구ë íì¬, ììží íí 늬ìŒ, ì€ìµ ë°ëªš ë° ë구 ì¬ì© íì íìžíìžì. Ʞ볞 ìì ë¶í° ê³ êž êž°ë¥ê¹ì§ 몚ë ë€ë£¹ëë€.
