InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

ã¬ãããããã§ã¤ã³ãã°ã¬ã¼ã·ã§ã³ã®ããã®ããã«ã¦ã§ã¢ã®ãã¯ãã«ã«ãµãã¼ããæ å½ãã¦ããå±±ä¸ã§ãã以åãSAGAãEventStormingã«ã¤ãã¦è¨è¿°ããã¨å®£è¨ãã¦ããã®ã§ãããå®éã®ã¨ããç§ãæ¸ãããããã£ã½ã©è¯ãæ¥æ¬èªã®æ¸ç±ãè¨äºãã§ã¦ãã¦ãããæ¸ãå¿ è¦ããªãã¨æã£ã¦ããã®ã§ãããä»åæ©ä¼ãããã ããã®ã§ç´ï¼å¹´ã¶ãã«âãã¤ã¯ããµã¼ãã¹ã¨ã¡ãã»ã¼ã¸ã³ã°ã®ãªã"ã®å¸æç·¨ãæ¸ããã¨ã«ãªãã¾ãããä»åã®è¨äºã§ã¯SAGAãEventStormingã®è©³ç´°ã¯æ¸ããªãã®ã§ãããç§ãã¤ãã³ããã¡ãã»ã¼ã¸ã³ã°ãå¿ è¦ã¨èããã«è³ã£ãå±æ©æãå¸æãå ±æãã¾ããããããæå³ã§ã¯ãããåç¹ã¨ããããå 容ã«ãªã£ã¦ãã¾ãããªãä»åè¨äºã«ã¯ã¨ãããå人çãªçµé¨ãæè¦ãå¤ãå«ã¾ãã¾ãã®ã§ãäºåã«ç°è«ã¯èªãããã¨ã«ãã¾ãã 以åã®è¨äºã¯ãã¡ãï¼ ããã¤ã¯ããµã¼ãã¹ã¨ã¡ãã»ã¼ã¸ã³ã°ã®ãªã [æ¦è¦ç·¨]ã ããã¤ã¯ããµã¼ãã¹ã¨
ã¯ããã« ãã®è¨äºã¯ãAEON Advent Calendar 2023ã®21æ¥ç®ã§ãð ã¤ãªã³ã¹ãã¼ããã¯ããã¸ã¼æ ªå¼ä¼ç¤¾ï¼é称ASTï¼ã®CTO室TechLeadãã¼ã ã®@t0doroki_takaã§ããå¼ç¤¾ã§ã¯SREãã¼ã ã®çºä¿¡ã«å¢ããããã¾ãããã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã¼ããã®è©±é¡ãç©æ¥µçã«çºä¿¡ãã¦ãããã°ã¨æãã¾ãã èªåã®ææ¦ã®æ¯ãè¿ã 以åã大è¦æ¨¡ECã·ã¹ãã ã®ãªãã¬ã¼ã¹æ¡ä»¶ã«é¢ãã£ãæ(ããã¦ææ¦ããã¨ã)ã®æ¯ãè¿ãã§ãã ä»ååãä¸ããã±ã¼ã¹ã¹ã¿ãã£ã¯ãã·ã¹ãã å ¨ä½(é£ä¿ããã·ã¹ãã å«ã)ã¨ãã¦ã¯æ®µéç移è¡ã§ã¯ããã¾ãããã主ã¿ã¼ã²ããã¨ãªãã·ã¹ãã ã¯ãå ¨ECæ©è½ãå æ¬ãã大è¦æ¨¡ãªã·ã¹ãã ã§ãããããã«ã¹ã¯ã©ããã§ãªãã¬ã¼ã¹ãããã®ã§ããã 巨大ãªã¢ããªã¹æ§é ã§ãã£ãããããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ã«ç§»è¡ãããã¨ã§ããµã¼ãã¹æä¾ã®ã¢ã¸ãªãã£ã確ä¿ãããã¨ãç®çã®ä¸ã¤ã§ã
ãã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ã«ããã¦ã¯ãåã ãç¬ç«ã«é¸å®ãããã¼ã¿ãã¼ã¹ãæã¤è¤æ°ã®ãµã¼ãã¹ã«ã¾ããã£ã¦ããã¼ã¿ã®æ´åæ§ãç¶æããå¿ è¦ãããã¾ãã ãã®ããã®æ¹æ³ã¨ãã¦ãSagaãã¿ã¼ã³ã¨å¼ã°ããè¨è¨æ¹æ³ãããã¾ãããSagaã§ã¯åé¢æ§ãæ¬ å¦ãã¦ããLost Updateçã®ç°å¸¸ãçºçãããã¾ããã ããã§æ¬è¨äºã§ã¯ãSagaã®åé¢æ§ãé«ããããã®å®è£ ã«ãããTipsã解説ãã¾ãã ç®æ¬¡ ç®æ¬¡ ã¯ããã« è¤æ°ãµã¼ãã¹éã§ã®æ´åæ§ç¶æã«ãããèª²é¡ Sagaãã¿ã¼ã³ Sagaãæ§æãããã©ã³ã¶ã¯ã·ã§ã³ Sagaã«ãã£ã¦å®ç¾ãããå®å ¨æ§ ååæ§ï¼Atomicityï¼ æ´åæ§ï¼Consistencyï¼ åé¢æ§ï¼Isolationï¼ æ°¸ç¶æ§ï¼Durabilityï¼ ç°å¸¸ãé²æ¢/軽æ¸ããå®è£ åé¢æ§ã®æ¬ å¦ãå¼ãèµ·ããç°å¸¸ åé¢æ§ã®æ¬ å¦ã¸ã®å¯¾ç Semantic Lock Commutative Up
Spring Bootã«ããAPIããã¯ã¨ã³ãæ§ç¯å®è·µã¬ã¤ã 第2ç ä½å人ãã®éçºè ããInfoQã®ããããã¯ãPractical Guide to Building an API Back End with Spring BootããããSpring Bootã使ã£ãREST APIæ§ç¯ã®åºç¤ãå¦ãã ããã®æ¬ã§ã¯ãåºçæã«æ°ãããªãªã¼ã¹ããããã¼ã¸ã§ã³ã§ãã Spring Boot 2 ã使ç¨ãã¦ãããããããSpring Boot3ãæè¿ãªãªã¼ã¹ãããéè¦ãªå¤...
Author: @urahiroshi, Engineering manager of Web Platform team 2022å¹´8æ4æ¥ãã¡ã«ã«ãªã§ âweb-2â ã¨å¼ã°ãããµã¼ããã·ã£ãããã¦ã³ããã¾ãããããã¯ã¡ã«ã«ãªWebçã®éçºã«æºãã£ã¦ãããã¼ã ã«ã¨ã£ã¦ãä¸ã¤ã®åºåãã¨ãªãåºæ¥äºã§ããã web-2ã¯PHPã§è¨è¿°ãããwebãµã¼ãã§ã2015å¹´ãã https://www.mercari.com/jp/ é ä¸ã®ã³ã³ãã³ããé ä¿¡ãã¦ãã¾ããããç¾å¨ã§ã¯è¤æ°ã®Webãã¤ã¯ããµã¼ãã¹ããã®æ©è½ãæ ã£ã¦ããã https://www.mercari.com/jp/ é ä¸ã®ãã¼ã¸ã¯å¾ç¶ã¨ãªãWebãã¤ã¯ããµã¼ãã¹ãé ä¿¡ãããã¼ã¸ã¸ãªãã¤ã¬ã¯ãããã¦ãã¾ãã ã¡ã«ã«ãªWebã®ãã¤ã¯ããµã¼ãã¹åã«åããéçºãå§ã¾ããæçµçã«web-2ãã·ã£ãããã¦ã³ãããã¾ã§ãå®ã«4年以ä¸ã®æéããã
Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of two or more services that are: Independently deployable Loosely coupled Services are typically organized around business capabilities. Each service is often owned by a single, small team. For a business to thrive in todayâs volatile, uncertain, complex and ambig
æ¬æ¸ã¯ãã¢ããªã¹ãããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ã¸ã¨ç§»è¡ããããã®å®è·µçãªã¬ã¤ãã§ãããã¤ã¯ããµã¼ãã¹ãèªåãã¡ã®ã·ã¹ãã ã«é©ãã¦ããããå¤æããã¨ããããããã¸ãã¹ãç¶æããªããã¢ããªã·ãã¯ãªã·ã¹ãã ãå°ããã¤ãã¤ã¯ããµã¼ãã¹ã«åãæ¿ãã¦ããæ¹æ³ãããã«ã¯ããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ãæé·ããã«ã¤ãã¦èµ·ãã課é¡ã¸ã®å¯¾å¦ã®ä»æ¹ã¾ã§ãè±å¯ãªä¾ãã·ããªãªãç¨ãã¦è§£èª¬ãã¾ããã¾ããã¢ããªã¹ããã¼ã¿ãã¼ã¹ãå解ãã¦ããã®ã«å½¹ç«ã¤æ§ã ãªãã¿ã¼ã³ããã¯ããã¯ãæ±ãã¾ãã ã·ã¹ãã ã®ã¢ã¼ããã¯ãã£ç§»è¡ã«ã¤ãã¦å ·ä½çãªæ¹æ³ã解説ããæ¬æ¸ã¯ãã¨ã³ã¸ãã¢å¿ æºã®ä¸åã§ãã ã¯ããã« 1ç« ãå¿ è¦ååãªãã¤ã¯ããµã¼ãã¹ 1.1ããã¤ã¯ããµã¼ãã¹ã¨ã¯ 1.1.1ãç¬ç«ãããã¤å¯è½æ§ 1.1.2ããã¸ãã¹ãã¡ã¤ã³ã«åºã¥ãã¢ãã«å 1.1.3ãèªåãã¡ã®ãã¼ã¿ãææãã 1.1.4ããã¤ã¯ããµã¼ãã¹ãããããå©ç¹
ã¤ãã¼æ ªå¼ä¼ç¤¾ã¯ã2023å¹´10æ1æ¥ã«LINEã¤ãã¼æ ªå¼ä¼ç¤¾ã«ãªãã¾ãããLINEã¤ãã¼æ ªå¼ä¼ç¤¾ã®æ°ããããã°ã¯ãã¡ãã§ããLINEã¤ãã¼ Tech Blog ããã«ã¡ã¯ãYahoo!ã·ã§ããã³ã°ã§ã·ã¹ãã éçºãæ å½ãã¦ããç³ç°ã¨æä¸ã§ãã Yahoo!ã·ã§ããã³ã°ã§ã¯æ°å件ã«ã®ã¼ãååãæ¥ã æ´æ°ããã¦ãã¾ãã ä»åã¯ãããæ¯ããåºåãã¼ã«ããã¤ã¯ããµã¼ãã¹åãã¦è§£æ±ºãã課é¡ã¨ãè¤æ°ã®ãã¼ã ã§éçºããä¸ã§èª²é¡ã«æãããã¨ãç´¹ä»ãã¾ãã åºåãã¼ã«ï¼ã¹ãã¢ã¨ãã£ã¿ï¼ã«ã¤ã㦠ãã¤ã¯ããµã¼ãã¹åã®è©±ã«å ¥ãåã«ãã¾ãã¯Yahoo!ã·ã§ããã³ã°ã®åºåãã¼ã«ï¼ã¹ãã¢ã¨ãã£ã¿ï¼ã«ã¤ãã¦ç´¹ä»ãã¾ãã ã¹ãã¢ã¨ãã£ã¿ã¨ã¯ãåºåºã¹ãã¢ã®æ¹ã ãYahoo!ã·ã§ããã³ã°ã«åºåããããã®ãã¼ã«ã§ãã åºåãã¼ã¿ã¯ä»¥ä¸ã®å³ã«ããããã¼ã§é£æºããã¾ãã ååæ å ±ã«ã¯ä»¥ä¸ã®æ å ±ãå«ã¾ãã¦ãããå ¥ç¨¿ãããå¤ãæ£ãããã©
èªåãè¤æ°ã®ã·ã¹ãã ã®éçºãçµé¨ãã¦å¾ã確信ã¨ãã¦ããèªè¨¼ã¨èªå¯ã¨èª²éã¨ã³ã¢ãã¡ã¤ã³ã®åé¢ããã¡ããã¡ãéè¦ã§ãããã¨ãããã®ãããã®ã§ãã³ã¬ãæ´çãã¦ã¢ã¦ãããããã¦ãã åé¢ããã¢ããã¼ã·ã§ã³ã¨ã¯ Microserviceæèã§ããã¨ããããã¤ç¬ç«æ§ã ã£ããããªã½ã¼ã¹ã®æé©é åã ã£ãããé害ã®å±æåã ã£ãããéçºçµç¹ã¨ã®ãããã³ã°ã ã£ãããã¡ãªããã¨ãã¦èªããããã¨ãå¤ãã ã ããããã§åãä¸ãããã®ã¯æ¦è¡çDDDç観ç¹ã§ã®ã³ã³ããã¹ãåé¢ã®æç¨æ§ã§ããã â»ã¡ãªã¿ã«ã³ã³ããã¹ãåé¢ã®ã¿ã§ããã°ã¢ã¸ã¥ã©ã¢ããªã¹ã ãã§å®ç¾å¯è½ã æ¦è¡çDDDç観ç¹ã§ã®é¢å¿äºã®åé¢ã«ããã¡ãªããã¨ã¯ ã³ã³ããã¹ããåé¢ããã¦ãããã¨ã«ãã£ã¦ãå¢çãã¾ããéã«ããã®I/Fã¯æ£ããã®ãï¼ããé½åº¦èãããã¨ãå¼·å¶ãããã¨ãã§ããã å¢çããªããã°æå³ããªãå¯çµåãçã¿ããããªã£ã¦ãã¾ãã ãã¡ãããå¢çãè¶ ãã
Spring Bootã«ããAPIããã¯ã¨ã³ãæ§ç¯å®è·µã¬ã¤ã 第2ç ä½å人ãã®éçºè ããInfoQã®ããããã¯ãPractical Guide to Building an API Back End with Spring BootããããSpring Bootã使ã£ãREST APIæ§ç¯ã®åºç¤ãå¦ãã ããã®æ¬ã§ã¯ãåºçæã«æ°ãããªãªã¼ã¹ããããã¼ã¸ã§ã³ã§ãã Spring Boot 2 ã使ç¨ãã¦ãããããããSpring Boot3ãæè¿ãªãªã¼ã¹ãããéè¦ãªå¤...
GraphQL Tokyo #10 Links: p11 https://speakerdeck.com/qsona/graphql-for-service-to-service-communication-protocol p12 https://note.com/qsona/n/nfc73a8â¦
è¤æ°ã®ã¯ã©ã¦ããµã¼ãã¹ãå©ç¨ãã¦ããï¼ãã«ãã¯ã©ã¦ãï¼ãªã©ãåç´ã«ã¯éå網ãæ§ç¯ã§ããªãç°å¢ã§ãã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ãæ¡ç¨ããå ´åã«ã¯ããµã¼ãã¹éã®èªè¨¼èªå¯ãå¿ è¦ã¨ãªãããã®å ´åã®ãµã¼ãã¹éã®èªè¨¼èªå¯æ¹å¼ã決ããåèã¨ãªããOSSãSaaSãWebãµã¼ãã¹ã§æ¡ç¨æ¹å¼ã¤ãã¦æ´çããã Istio ãµã¼ãã¹ã¡ãã·ã¥ã®å®è£ ã¨ãã¦æåãªIstioã§ã¯ãµã¼ãã¹ééä¿¡ã以ä¸ã®ããã«å¶å¾¡ã§ããã Istioã®èªè¨¼èªå¯ã§ã¯èªè¨¼ä¸»ä½ãService Identityã¨ããã¢ãã«ã§æ½è±¡åãããKubernatesãIstioã§å®ç¾©ããService Accountã«å ãã¦ãGCP/AWSã®IAMã¢ã«ã¦ã³ãããªã³ãã¬ãã¹ã®æ¢åIDãªã©ãService Identityã¨ãã¦æ±ããã¨ãã§ããã ãµã¼ãã¹éã®èªè¨¼ (Peer Authentication) ã¯ãåãµã¼ãã¹ (Pod) ã«è¨ç½®ããSideca
ãã®ãã¿ã¼ã³ã«ã¯2ã¤ã®èæ¯ãããã¾ããã²ã¨ã¤ã¯ãæè¡è ããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ãã¿ã¼ã³ãæ¡ç¨ãã¦ãè¤æ°ã®(çæ³çã«ã¯åä¸ç®çã§ãç¬ç«ãã¦ãããã¤å¯è½ãª)ãµã¼ãã¹ã§æ§æãããã¢ããªã±ã¼ã·ã§ã³ãéçºããããã«ãªã£ããã¨ã§ãããµãã¤ãã¯ãä¼æ¥ãã³ã³ãã(Dockerãªã©)ããªã¼ã±ã¹ãã¬ã¼ã¿(Kubernetesãªã©)ããããã·/ã²ã¼ãã¦ã§ã¤(Envoyãªã©)ã¨ãã£ããã¯ã©ã¦ããã¤ãã£ããªãã©ãããã©ã¼ã ãã¯ããã¸ãæ¯æããããã«ãªã£ããã¨ã§ãã æå³ ãµã¼ãã¹ã¡ãã·ã¥ã解決ãããã¨ããåé¡ã¯æ¬¡ã®ãããªãã®ã§ãã ãµã¼ãã¹ãã£ã¹ã«ããªãã«ã¼ãã£ã³ã°ãã¢ããªã±ã¼ã·ã§ã³ã¬ãã«(ã¬ã¤ã¤7)ã®éæ©è½éä¿¡è¦ä»¶ãå¦çããè¨èªå¯¾å¿ã®éä¿¡ã©ã¤ãã©ãªããåã ã®ãµã¼ãã¹ç¨ã«ã³ã³ãã¤ã«ããå¿ è¦æ§ã®æé¤ å¤é¨ãµã¼ãã¹ã®ãããã¯ã¼ã¯ãã±ã¼ã·ã§ã³ãã»ãã¥ãªãã£èªè¨¼ããµã¼ãã¹å質(QoS)ç®æ¨ãªã©ããµã¼ãã¹éä¿¡è¨å®ã®å¤
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
ããã«ã¡ã¯ããã©ãããã©ã¼ã ãã¼ã ã®æ± ç°ã¨ç³ãã¾ããåæ稿ã§ãã ãã©ãããã©ã¼ã ãã¼ã ã§ã¯ãã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ã®æ§æãæ¡ç¨ãéçºãé²ãã¦ãã¾ãã ã©ããªæ§æã§ãå¿ãã¦ã¯ãããªãã®ããã®ã³ã°ãããããéæ©è½è¦ä»¶ã®1ã¤ã§å°å³ãªåå¨ã§ããããµã¼ãã¹éç¨ãæ¯ããä¸ã§é常ã«éè¦ã§ãã ç´è¿ã§ãã¤ã¯ããµã¼ãã¹ã«ããããã®ã³ã°ã®æ§æã調æ»ãããã©ãããã©ã¼ã ãã¼ã ã§ã¡ã¤ã³ã§æ¡ç¨ãã¦ããGoè¨èªã§ã®å®è£ ãæ¤è¨¼ãã¾ããã ä»åã®è¨äºã§ã¯ãã®ã¾ã¨ããç´¹ä»ãã¾ãã ç®æ¬¡ ç®æ¬¡ ãã®ã³ã°ãã¹ããã©ã¯ãã£ã¹ for ãã¤ã¯ããµã¼ãã¹ ãªã¯ã¨ã¹ãã«ã¦ãã¼ã¯ãªIDãä»ä¸ãç´ä»ããã§ããããã«ãã ãã°ã¯ä¸ç®æã«éãã ãã°ãã¼ã¿ãæ§é åãã ãã°ã«æçãªæ å ±ãæããã ã©ã®ãµã¼ãã¹ã§ãå ±éã§æã¤ã®ãæã¾ãããã£ã¼ã«ã ãªã¯ã¨ã¹ãã®ã¨ã³ããªã¼ãã¤ã³ãã¨ãªããµã¼ãã¹ã§æã¤ã®ãæã¾ãããã£ã¼ã«ã Goè¨èªã§ã®å®è£
CloudNative Days Kansai 2019ã®ãã¼ãã¼ãã®è³æã§ã
ã¡ã«ã«ãªJP Webãã¼ã ã®@urahiroshiã§ãã Webãã¼ã ã§ã¯ãã¡ã«ã«ãªWebã®ãã¤ã¯ããµã¼ãã¹åãæ©è½éçºãè¡ãªã£ã¦ãã¾ããã¡ã«ã«ãªWebã®ãã¤ã¯ããµã¼ãã¹åã®æ¦è¦ã«ã¤ãã¦ã¯ãæ¨å¹´ã®Tech Conferenceã®è³æãããã¾ã¨ã¾ã£ã¦ããã®ã§ããã¡ããåç §ãã¦ããã ããã¨è¯ããã¨æãã¾ãã https://speakerdeck.com/mercari/mtc2018-web-application-as-a-microservice-3a161f5c-07fa-4dca-99e9-bd0e8feeeddf ç¾å¨ãã¡ã«ã«ãªWebã®ããããã¼ã¸ã¯ãã¤ã¯ããµã¼ãã¹ç°å¢ããé ä¿¡ããã¦ãããä»ã®ãã¼ã¸ãéæãã¤ã¯ããµã¼ãã¹ç°å¢ã«ç§»è¡ãã¦ããäºå®ã§ãã ãã®è¨äºã§ã¯ããã¤ã¯ããµã¼ãã¹ç°å¢ã§å°å ¥ãããã¡ã«ã«ãªWebã®æ°ãããªãªã¼ã¹ããã¼ã«ã¤ãã¦è¨è¼ãã¾ãã ã¾ãã¡ã«ã«ãªWebã®ãã¤ã¯ããµ
ãµãããFGã®ãããéè¡ãåå®ç³»ã·ã¹ãã ã«ãGoogle Cloud Platformãæ¡ç¨ãéçºã¹ãã¼ãè¿ éå ç¦å²¡éè¡ãªã©ãåä¸ã«æã¤éèæã¡æ ªä¼ç¤¾ããµããããã£ãã³ã·ã£ã«ã°ã«ã¼ãï¼FGï¼ã¯9æ24æ¥ã2020年度ä¸ããã©ã«éæ¥äºå®ã®ã¤ã³ã¿ã¼ãããå°æ¥éè¡ãã¿ããªã®éè¡ãï¼ä»®ç§°ï¼ã®åå®ç³»ã·ã¹ãã ã®åºç¤ã«ãGoogle Cloud Platformï¼GCPï¼ãæ¡ç¨ããã¨çºè¡¨ãããéçºã»éç¨ã³ã¹ããæããå¤é¨ãµã¼ãã¹ã¨ã®é£æºãããããããçããããã åå®ç³»ã·ã¹ãã ã®éçºã§ã¯ãé éãçºæ¿ã¨ãã£ãåã ã®éèæ©è½ãç¬ç«ãããµã¼ãã¹ã¨ãã¦éçºããAPIãªã©ã§é£æºãã¦1ã¤ã®ã¢ããªã±ã¼ã·ã§ã³ã«ããããã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ãã£ãã¨ããææ³ãæ¡ç¨ããæ¹éãGCPã¯ãããããã¤ã¯ããµã¼ãã¹ã®ç¨¼åã«é©ãã¦ããã¨å¤æããå°å ¥ã決ããã¨ããã ã·ã¹ãã éçºãæ å½ãããµãããFGåä¸ã®ã¼ããã³ã¯ã»ãã¶ã¤ã³ãã¡
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}