<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anas Khattar</title>
    <description>The latest articles on DEV Community by Anas Khattar (@anaskhattar).</description>
    <link>https://dev.to/anaskhattar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F362326%2F57a877e6-b111-4fbb-95ff-aa33e76d307c.jpeg</url>
      <title>DEV Community: Anas Khattar</title>
      <link>https://dev.to/anaskhattar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anaskhattar"/>
    <language>en</language>
    <item>
      <title>Organizing AWS Community MENA GameTech Day 2021</title>
      <dc:creator>Anas Khattar</dc:creator>
      <pubDate>Thu, 01 Jul 2021 17:44:13 +0000</pubDate>
      <link>https://dev.to/aws-heroes/organizing-aws-community-mena-gametech-day-2021-flb</link>
      <guid>https://dev.to/aws-heroes/organizing-aws-community-mena-gametech-day-2021-flb</guid>
      <description>&lt;p&gt;After launching me-south-1 during &lt;a href="https://www.youtube.com/watch?v=O6OFE46pyJQ"&gt;AWS Summit Bahrain 2019&lt;/a&gt; we got to meet the amazing &lt;a href="https://www.linkedin.com/in/pakiza/"&gt;Pakiza Abdulrahman&lt;/a&gt; from &lt;a href="https://twitter.com/bahrainedb"&gt;EDB Bahrain&lt;/a&gt;, who explained how the game development community is growing in Bahrain and how the launching of the new AWS Region in Bahrain will decrease the latency for gaming development and game streaming in the region.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;UNESCO sees digital games as innovative tools for teaching and learning about peace and sustainability.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Last year 2020 we only managed to run the AWS MENA Community Day and this year we decided on a &lt;a href="https://awsmena.community/gametech/"&gt;virtual GameTech Day conference&lt;/a&gt; to start with and shed the light on a world of opportunity in the game development industry especially with cloud scalability and agility as game development have an interwoven demand within all other digital experiences.&lt;/p&gt;

&lt;p&gt;We were lucky to be AWSomely sponsored by &lt;a href="https://www.amd.com/en/graphics/workstation-virtual-graphics-amazon-g4ad"&gt;AMD&lt;/a&gt; who are interested to shed light on their &lt;a href="https://aws.amazon.com/ec2/amd/"&gt;AWS&lt;/a&gt; general purpose and game development and streaming instance offerings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community, Outreach and Communication
&lt;/h3&gt;

&lt;p&gt;For collaboration and outreach we talked to &lt;a href="https://arabic.games/"&gt;Arabic Games&lt;/a&gt; organizer &lt;a href="https://twitter.com/JosephRAzzam"&gt;Joseph Azzam&lt;/a&gt; and the UnReal Bahrain community lead by &lt;a href="https://www.linkedin.com/in/yousef-buhazza-9560a618/"&gt;Yousef BuHaza&lt;/a&gt; to help us navigate the regional game development ecosystem because they have alot of experience with Game Jams in the region.&lt;/p&gt;

&lt;p&gt;Our AWS Communities in MENA were very excited and curious at the same time since its a new topic for most digital businesses in the region. A meetup will be created within all participating user groups. You can find a list of AWS user groups in MENA &lt;a href="https://aws.amazon.com/developer/community/usergroups/middle-east/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speakers
&lt;/h3&gt;

&lt;p&gt;The speakers come from around the globe and from the MENA region to bring new perspectives, technologies and skills to our audience. Here's a list of our speakers, topics and their short bio.&lt;/p&gt;

&lt;h4&gt;
  
  
  Musab Abdullah - Empowering Bahrain and the MENA Tech Community
&lt;/h4&gt;

&lt;p&gt;Musab is the Executive Director of Investment Development at the Bahrain Economic Development Board (EDB). In his capacity, he focuses on international outreach and attracting investments to the Kingdom within the ever-growing technology sector. Along with continuous policy advocacy and eco-system building to ensure ease of investment and continuous growth and success for investors.&lt;br&gt;
Musab and his team work closely with technology-related companies, including startups, that are looking to access the region through the Kingdom of Bahrain. This includes supporting the companies throughout the decision-making process, through to their establishment and potential expansion of their operations. Musab is also responsible for working with key stakeholders to identify the strategic direction of the sector, develop the eco-system and ensure that Bahrain offers an attractive, seamless and friendly business environment for all entities, from startups to corporates. &lt;br&gt;
Prior to joining the EDB, Musab worked in the telecommunications sector for over a decade, as a policy-maker with the Ministry of Transportation and Telecommunications and as a regulator with the Telecommunications Regulatory Authority. His work focused on ensuring the continued growth and development of the sector, through introducing forward-looking policies, rolling out national projects and representing the Kingdom in international forums such as the International Telecommunications Union. He has also worked with a number of entities in other fields, including e-Government projects with the Central Informatics Organisation (now the Information and eGovernment Authority) and on banking solutions with Kuwait Finance House.&lt;br&gt;&lt;br&gt;
Musab holds a BSc. in Computer Science from the University of Bahrain and an MSc. in Finance from DePaul University.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linkedin.com/in/musab-abdullah-b213a8a"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://www.bahrainedb.com/"&gt;Web&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Michael DeNeffe - AMD and AWS – Powering Game Development
&lt;/h4&gt;

&lt;p&gt;For my entire career I’ve paired a passion for technology with an intuition for business and market development—resulting in a blend of business strategy and non-traditional ideas. Cloud graphics represent the perfect technology and marketplace to exercise my passion and experience&lt;/p&gt;

&lt;p&gt;I've developed partnerships big and small, all with the end goal to drive business success. I’ve managed dozens of product launches from cloud to enterprise to consumer and gaming. In the process I’ve driven success for companies, from start-ups to industry leaders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linkedin.com/in/michaeldeneffe/"&gt;Linkedin&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  David Heidt - Go global in minutes: How you can accelerate your gameservers and backends with AWS Edge Services.
&lt;/h4&gt;

&lt;p&gt;AWS Senior Solutions Architect for Gaming, get in touch with David on his social channels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linkedin.com/in/davidsimonheidt"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://twitter.com/davidsheidt"&gt;Twitter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Olivier Chappe - The anatomy of a Presence API: how to modernize application with AWS Serverless services.
&lt;/h4&gt;

&lt;p&gt;AWS GameTech Solutions Architect, get in touch with Olivier on his social media channels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linkedin.com/in/olivierchappe"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://twitter.com/olivier_chappe"&gt;Twitter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Marion Finnigan - Know your Players, grow your Game: A Guide to LiveOps in the Cloud
&lt;/h4&gt;

&lt;p&gt;15 years in tech, covering the full breadth (hardware, operating systems, software, cloud), has led me to my happy place - the games industry. I worked with customers up and down the value chain, ranging from retailers (B2C), ISPs and telcos (B2B2C) to now video games developers/publishers and cloud providers (B2B). I'm an experienced and determined all-rounder with strong business acumen, an analytical and structured approach, and obsession for my customers - all influenced by strong values that I live by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Say what’s right and act upon it.&lt;/li&gt;
&lt;li&gt;Always do the best you can and be humble about it.&lt;/li&gt;
&lt;li&gt;Be passionate about what you do.&lt;/li&gt;
&lt;li&gt;Treat others as you wish to be treated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/marionfinnigan-love-what-i-do/"&gt;https://www.linkedin.com/in/marionfinnigan-love-what-i-do/&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Joseph Azzam - Unreal Engine and the Epic Ecosystem
&lt;/h4&gt;

&lt;p&gt;As part of the Evangelist team at Epic games, Joseph travels mostly in the Middle East to talk and teach Unreal Engine.&lt;br&gt;
Joseph founded LebGameDev, a non-profit initiative that focuses on growing the gamedev scene in Lebanon. &lt;br&gt;
He specialized in a wide range of topics including VR, cultural heritage preservation, photogrammetry, tech art, and Blueprint, which he used to Develop Byblos VR.&lt;br&gt;
He is currently teaching game development Saint-Joseph University of Beirut.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linkedin.com/in/josephazzam/"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://twitter.com/JosephRAzzam"&gt;Twitter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Yousef BuHaza - The Impact of GameTech Across Sectors
&lt;/h4&gt;

&lt;p&gt;Unreal Bahrain is a community-based group of volunteers that supports innovators and entertainment entrepreneurs in Bahrain and the region mainly in the field of game development. Since our formation in Early 2017 by Yousef BuHazza.&lt;br&gt;
The community aims to aims to establish an environment that supports local and regional game developers. We recognize that game development is a collaborative effort that combines several disciplines, so to us, game developers are people with different skills that would like to use those skills to develop a game.&lt;br&gt;
Initially the community was focused on developing digital games using Epic Games Unreal Engine, but has shifted to support all forms of game development regardless of the platform and included physical games such as table top games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/YousefBuHazza"&gt;Twitter&lt;/a&gt;&lt;/strong&gt; - &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/yousef-buhazza-9560a618/"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://unrealbahrain.com/"&gt;Web&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Denis Dyack - How To Get Into The Video Game Industry
&lt;/h4&gt;

&lt;p&gt;Denis Dyack, a video game industry veteran of more than 30 years, is the Founder and CEO of Apocalypse Studios. His studio evangelizes using a cloud-first approach in game development and partners with AWS Game Tech to move the medium of the games industry forward.&lt;/p&gt;

&lt;p&gt;In his years of experience speaking at games conferences and within AWS communities, Denis has been an advocate for building on Amazon Lumberyard and more recently in moving over game development pipelines to AWS.&lt;/p&gt;

&lt;p&gt;Denis is also exploring deep Twitch integration for games and continues to find innovative ways to partner Amazon with games communities. He is always excited to share his AWS experiences and passion for his craft with others in the games industry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/denis_dyack"&gt;Twitter&lt;/a&gt;&lt;/strong&gt; - &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/denis-dyack-4a94a61"&gt;Linkedin&lt;/a&gt; - &lt;a href="https://apocalypse333.com/"&gt;Web&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Panel - State of the Game Dev industry the region.
&lt;/h3&gt;

&lt;p&gt;Community Leaders from Lebanon, Tunis, Egypt, Saudi Arabia and Bahrain will be presenting the latest progress in the game dev scene in their countries, as well as go over the future initiatives to look forward to.&lt;/p&gt;

&lt;h4&gt;
  
  
  Panelist
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Joseph Azzam (Host) - Lebanon
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Youssef BuHazza - Bahrain
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Nourhan ElSherief, Senior Game Developer - Egypt
&lt;/h4&gt;

&lt;p&gt;Graduated in The Faculty of Computers and Information in 2013, and completed the ITI game development 9-month diploma in 2014. Have had experience working with several studios on several mobile games, till joining Instinct Games in 2016 and been working as an Unreal developer ever since. As a side project, I started Indie Games Corner in late 2016, a blog for spreading awareness about the indie game scene in Egypt.  &lt;/p&gt;

&lt;h4&gt;
  
  
  Houssem Ben Amor - Tunis
&lt;/h4&gt;

&lt;p&gt;Business Development Manager at Nuked Cockroach, Tresorier of GlobalGameJam.Inc, Co-Founder of Tunisian Games Developers&lt;/p&gt;

&lt;h3&gt;
  
  
  Heroes Trio
&lt;/h3&gt;

&lt;p&gt;AWS Community Heroes &lt;a href="https://twitter.com/aseldesouky"&gt;Ahmed Samir&lt;/a&gt; founder of &lt;a href="https://twitter.com/AwsBelaraby"&gt;AWS Bel Araby&lt;/a&gt; and  &lt;a href="https://twitter.com/anaskhattar"&gt;Anas Khattar&lt;/a&gt; AWS Community Hero as well as AWS Container Hero &lt;a href="https://twitter.com/walidshaari"&gt;Walid Shaari&lt;/a&gt; took lead of logistics and coordination between all the different communities and speakers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Landing Page
&lt;/h3&gt;

&lt;p&gt;For the landing page &lt;a href="https://twitter.com/lahdiouiouadie"&gt;Ouadie Lahdioui&lt;/a&gt; AWS UG Morocco Leader used the same static site generator Jeykell which was forked from AWS Community Nordics with a new theme &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/aws-mena-community"&gt;
        aws-mena-community
      &lt;/a&gt; / &lt;a href="https://github.com/aws-mena-community/awsmena.community"&gt;
        awsmena.community
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Follow this tutorial from Aleksandr Hovhannisyan to build your own static site with Jekyll on Github Pages &lt;div class="ltag__link"&gt;
  &lt;a href="/aleksandrhovhannisyan" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_CkRBSgv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--mfxHJ3ky--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/304963/9894af56-32fb-4ded-8d66-89904e828dc1.jpg" alt="aleksandrhovhannisyan"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aleksandrhovhannisyan/creating-a-personal-website-with-jekyll-and-github-pages-a-comprehensive-guide-3fje" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Getting Started with Jekyll and GitHub Pages: Your First Website&lt;/h2&gt;
      &lt;h3&gt;Aleksandr Hovhannisyan ・ Mar 1 '20 ・ 46 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#jekyll&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#github&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
Also check the live site here -&amp;gt; &lt;a href="https://awsmena.community/gametech"&gt;https://awsmena.community/gametech&lt;/a&gt;

&lt;h3&gt;
  
  
  Registration, Broadcasting, Streaming and Graphics
&lt;/h3&gt;

&lt;p&gt;We reached out to AWS regional MENA office in Dubai to create an official registration page for the event &lt;a href="https://menagametechday2021.splashthat.com/"&gt;https://menagametechday2021.splashthat.com/&lt;/a&gt; which we linked to our landing and agenda page.&lt;/p&gt;

&lt;p&gt;We will be using &lt;a href="https://streamyard.com"&gt;StreamYard&lt;/a&gt; for live production and broadcasting to the #1 streaming platform for gamers in the middle east &lt;a href="https://rawa.tv/"&gt;Rawa TV&lt;/a&gt; as well as Twitch and Youtube. Links will be sent by email for registrants a day before the event.&lt;/p&gt;

&lt;p&gt;Our talented designer &lt;a href="https://www.linkedin.com/in/boushra-hassanieh/"&gt;Boushra Hassanieh&lt;/a&gt; crafted the posts using &lt;a href="https://www.canva.com/"&gt;Canva&lt;/a&gt; which is very helpful for custom posts and cover images of the event on Instagram, Twitter, Facebook and Linkedin. &lt;/p&gt;

&lt;h3&gt;
  
  
  PS5 Giveaway and Conference Feedback
&lt;/h3&gt;

&lt;p&gt;AMD offered a PlayStation 5 console to 4 participants in our post-event feedback survey. The survey will be sent to registrants after the event for feedback and registration in the PS5 raffle.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://awsmena.community/gametech"&gt;Register now and lets play one more game!&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>aws</category>
      <category>gamedev</category>
      <category>cloud</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AWS Well-Architected Framework For Startups</title>
      <dc:creator>Anas Khattar</dc:creator>
      <pubDate>Fri, 16 Oct 2020 12:40:48 +0000</pubDate>
      <link>https://dev.to/anaskhattar/aws-well-architected-framework-for-startups-3l70</link>
      <guid>https://dev.to/anaskhattar/aws-well-architected-framework-for-startups-3l70</guid>
      <description>&lt;p&gt;As an early-stage startup, you face a lot of challenges with business, technology, talent, and market competition. You have to worry about building your MVP and the latest features you want to add in the next sprint in order to penetrate your market. Here innovation and disruption are your springboards for success. AWS gives your startup a breadth of tools that allow a fast start to deep capability. From essentials like user management, scalable frameworks, and business logic tools to cutting edge image analysis, voice recognition, artificial intelligence, and machine learning, the startups using this technology most effectively will be the ones changing the game.&lt;/p&gt;

&lt;p&gt;There is no value in worrying about failing storage or a compromised server. Your teams are usually focusing on the core business product and service it can become challenging to build a system that delivers on your expectations and requirements. That's why it's important to study AWS managed services and follow best practice guidelines to ensure you have the right set of checklists to go through to achieve a “standardized” approach to creating your environment.&lt;/p&gt;

&lt;p&gt;Creating a software system is a lot like constructing a building. If the foundation is not solid, structural problems can undermine the integrity and function of the building. AWS has provided these guidelines in a framework called the &lt;a href="https://aws.amazon.com/architecture/well-architected/" rel="noopener noreferrer"&gt;Amazon AWS Well-Architected Framework&lt;/a&gt; built around 5 pillars, Security, Reliability, Performance Efficiency, Cost Optimization, and Operational Excellence. This framework was first introduced by Dr. Werner Vogels several years ago.&lt;/p&gt;

&lt;p&gt;Incorporating these pillars into your architecture helps produce stable and efficient systems. This allows you to focus on the other aspects of design, such as functional requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F02955a8yga5xx13c38jo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F02955a8yga5xx13c38jo.jpg" alt="AWS WA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this post, I provided an overview of the Well-Architected Framework’s five pillars. You can find more details—including definitions, FAQs, and resources—in each pillar’s whitepaper, link below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://d1.awsstatic.com/whitepapers/architecture/AWS_Well-Architected_Framework.pdf" rel="noopener noreferrer"&gt;Read the full Well-Architected whitepaper &amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Well-Architected Framework
&lt;/h2&gt;

&lt;p&gt;Amazon AWS has created this framework out of their vast experience with Cloud customers, large and small, and have been adopting it since then. Not only, but they changed their certification exams to be built around the Well-Architected framework. This shows the importance and efficiency of following it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvrg4exgcjsofq5h6u9jv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvrg4exgcjsofq5h6u9jv.png" alt="AWS Well Architected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The framework helps cloud architects build the most secure, high-performing, resilient, and efficient infrastructure possible for their applications. It provides a consistent approach for startups to evaluate architectures and provides guidance to implement designs that scale with your product needs over time.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost Optimization&lt;/strong&gt; guides around the ability to run systems to deliver business value at the lowest price point.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Efficiency&lt;/strong&gt; guides around the ability to use computing resources efficiently to meet system requirements, and to maintain that efficiency as demand changes and technologies evolve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt; guides around the ability of a system to recover from infrastructure or service disruptions, dynamically acquire computing resources to meet demand, and mitigate disruptions such as misconfigurations or transient network issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operational Excellence&lt;/strong&gt; guides around the ability to run and monitor systems to deliver business value and to continually improve supporting processes and procedures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt; guides around the ability to protect information, systems, and assets while delivering business value through risk assessments and mitigation strategies.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As you see, these pillars are a must for your production cloud environment to ensure that you are running a fast and reliable environment that runs on the minimal cost and in a secure environment. These are the essential aspects of an environment to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Certifications
&lt;/h2&gt;

&lt;p&gt;Use the Well-Architected Framework to guide your ideation process as well as to develop Proofs of Concept. You can fit all pieces together by getting your team AWS certified beforehand and then setting post-deployment plans to establish DevOps environments that support scalability and rapid growth.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://d1.awsstatic.com/training-and-certification/Training-APAC-microsite/site-startup/index/AWS_course_guide-startup.pdf" rel="noopener noreferrer"&gt;Read this guide about AWS Certification and Training for startups &amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your application is up and running, set up DevOps best practices for capturing and responding to user feedback to drive future innovation.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>aws</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Defining MVP and Startup Processes: Hypothesis-Driven Development</title>
      <dc:creator>Anas Khattar</dc:creator>
      <pubDate>Fri, 16 Oct 2020 11:23:03 +0000</pubDate>
      <link>https://dev.to/anaskhattar/defining-mvp-and-startup-processes-hypothesis-driven-development-27pd</link>
      <guid>https://dev.to/anaskhattar/defining-mvp-and-startup-processes-hypothesis-driven-development-27pd</guid>
      <description>&lt;p&gt;Modern continuous delivery methods demand the use of hypotheses, not requirements, to deliver what customers want. Startups and developers should embrace continuous experimentation and adaption right from the start. So thinking and researching MVPs and writing this down as the closest I could get to define an MVP process or startup process.&lt;/p&gt;

&lt;p&gt;First, you should have a hypothesis, you don’t really build something because you can but you want to know what is the right thing to build, what do my customers care about? Also aim to have a tight and measurable hypothesis that's clear and defined.&lt;/p&gt;

&lt;p&gt;Then you want to build this, and ideally, you want to build the minimum possible to disprove that hypothesis, if you can’t then you keep going, then you're going to need to measure it, because you can’t disprove or prove something if you don’t measure.&lt;/p&gt;

&lt;p&gt;Once you measure you can start to learn and iterate, and as you iterate onwards, you will then start building or altering on that first phase. You can see that build, measure, iterate phase it continuous you keep going round and round and round. Although we have a scale at the end of the diagram above, it's better to think of that as a build measure iterate phase as well there no real distinction between them.&lt;/p&gt;

&lt;p&gt;Think about the clarity of what you are trying to achieve, because when you want to measure something you want something that’s singular and within your aim. I speak to a lot of startups but when I ask them what their benefit is, I get a list. It's really always good to start with a really clear and singular mission, something that you can deliver that’s really crisp to your customers.&lt;/p&gt;

&lt;p&gt;You want to make sure it's measurable. If you can’t measure it, you can’t know if you succeed against your metric, you might not know what's the right value to get to is but you need at least to have a measure to know where you are in relative terms.&lt;/p&gt;

&lt;p&gt;The hypothesis is incredibly important for you to frame what your business is around.&lt;/p&gt;

&lt;h2&gt;
  
  
  M{x}P
&lt;/h2&gt;

&lt;p&gt;MVP stands for a minimum viable product, its the first product that you build and is the product that gets your startup through the product-market fit phase. It's not a prototype so it's not to be confused with a prototype. A prototype is something you create to see if your idea is feasible if it's like a hardware idea or helps you find a happy path for UX for your users to know how they experience your web app or mobile app. Or just to get a visual so that people can see what are you trying to build. So an MVP is not a prototype, and there are certain situations where you build a prototype before you build an MVP or you might have both an MVP and a prototype to be testing things on the side.&lt;/p&gt;

&lt;p&gt;This is the minimum number of features to test your hypothesis, and it is very important because a lot of people overbuild their MVP. It's very common, and you especially see a lot of overbuilding when you have people who never been around software development teams before or worked in a software development team. And overbuilding happens when you build features beyond what is needed to test your hypothesis.&lt;/p&gt;

&lt;p&gt;If you want to give a good example of an MVP lets take Lyft for example. What is Lyft trying to solve originally when they first released their product? They are trying to see if peer-to-peer transportation could work. So the minimum number of features they need to test their hypothesis is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Driver to be able to sign up and log-in.&lt;/li&gt;
&lt;li&gt;Rider to be able to log-in and signup.&lt;/li&gt;
&lt;li&gt;The rider is able to request a driver and the driver to be able to find that rider.&lt;/li&gt;
&lt;li&gt;A form of payment to be exchanged between the two parties which they can take their cut off.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's all the basic features needed without all the features you see now on Lyft like share your ride on social media or add a stop or hundreds of other features you see now which if they had on their MVP it would have been overbuilding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fijmqmpx58vg0v2gbdxds.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fijmqmpx58vg0v2gbdxds.png" alt="MVP Names"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are other kinds or other terms referring to the Minimum Viable Product:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Viable:&lt;/strong&gt; It's the most referred too commonly and it's a completely new product to test new dimensions of the product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usable:&lt;/strong&gt; Minimum Usable Product is to get your product in the hands of customers and make sure it's usable and get early feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lovable:&lt;/strong&gt; If you release a minimum lovable product, you are assuming the product existing in the market is disliked by the customers. And you are releasing a minimum lovable product saying that like I think I can do better than x competitor and here's why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testable:&lt;/strong&gt; Minimum Testable Product is good for risky business assumptions for example Airbnb or Lyft.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If you aren't embarrassed by the first version of your product, you shipped too late.”&lt;br&gt;
Reid Hoffman, LinkedIn CoFounder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Remember it should be very minimal and it doesn't matter how great the UI or UX looks. It just needs to be functional because you are trying to prove a single hypothesis with the minimum number of features.&lt;/p&gt;

&lt;p&gt;I've met a lot of startup founders who are perfectionists (I'm a perfectionist too) but you shouldn't wait until you product is perfect but until it's functional and useful at least at a basic minimal state and ship it out and get people using it and see if they actually like it. Because if they need it and want it they will not really care how it looks like or how beautiful it is. They're going to just start using it immediately. How many people actually care what Lyft looks like. Few people only care because when you need a ride you need a ride. Why do you care if there's a button for me to request a ride? A way to pay the driver. Great, I'm all set.&lt;/p&gt;

&lt;p&gt;So it's good if you are a perfectionist that there is someone on the team to push you to ship before you are ready.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9nw48kodgeig41odtfvk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9nw48kodgeig41odtfvk.png" alt="MVP Pyramid"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's take a look at the approach of how you think about your hypothesis or MVP. So if you can imagine this pyramid or stack of what a product is, so this is what you want at the end. You want everything colored in, everything completed, usable, valuable, reliable of course, to scale, and to be a great experience that's beautiful for your users.&lt;/p&gt;

&lt;p&gt;I spend a lot of time with people trying to build MVPs and we all try to take a slice of them and build them out. If your a designer there’s a very good chance you’ll start from the top and you’ll have an incredibly beautiful MVP or if your an engineer with an infrastructure background, you’d have an incredibly scalable product, or if your a site reliability engineer, its gonna be reliable, if you're on the business side and get that proposition right, it would be really valuable, or if your an application engineer you’d make a really usable product.&lt;/p&gt;

&lt;p&gt;But the question is which one of these do I do? But the simplest way to describe it is if you focus on one of them you don’t want to go super wide.&lt;/p&gt;

&lt;p&gt;You want to actually touch on all of them. So imagine this as an approach, your MVP needs to address a certain slice of everything, that's why its really important to think what's the minimum feature that will allow you to build that exact thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product Evolution
&lt;/h2&gt;

&lt;p&gt;MVP is obviously not a customer-facing term, while your first customers are gonna be your early adopters and your product will still need work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb6rjsv65ce7vw8f1852w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb6rjsv65ce7vw8f1852w.png" alt="MVP for Transportation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we are trying to solve the hypothesis of transportation for people we might start with a skateboard then move to a scooter then get more complicated from there. That's why an MVP should be the really bare-bones, it shouldn’t be the wheel or tire and you don’t release it until you have a car. That's an overbuild.&lt;/p&gt;

&lt;p&gt;Don’t get distracted with features outside your scope and don’t get distracted by things that don’t prove your hypothesis at its basic core level.&lt;/p&gt;

&lt;p&gt;It's better to have something that flows and can be progressively useful as you go on. Each one of these phases could be considered a product. If you were to build the wheels in the first phase and the engine in the second, you wouldn’t have something useful whereas here I can get A to B in the first phase “skateboard to bike to car, I can still achieve the same goal you are trying to do, your vision from one place to another but better and better over time and it's still a minimum viable product at each stage.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>mvp</category>
      <category>beginners</category>
      <category>firstyearincode</category>
    </item>
    <item>
      <title>Process Mining: A Data-Driven Migration Strategy To Microservices</title>
      <dc:creator>Anas Khattar</dc:creator>
      <pubDate>Wed, 08 Apr 2020 15:33:59 +0000</pubDate>
      <link>https://dev.to/anaskhattar/process-mining-a-data-driven-migration-strategy-to-microservices-2oao</link>
      <guid>https://dev.to/anaskhattar/process-mining-a-data-driven-migration-strategy-to-microservices-2oao</guid>
      <description>&lt;p&gt;This article aims to highlight a data-informed decomposition of monolithic systems into microservices. Process Mining, algorithms, and techniques used to discover processes based on their digital footprint is a powerful tool that can come handy when migrating to microservices. Event logs generated by monolithic systems can be analyzed to gain an objective view on current flows and usage which can inform the design of better decomposition to microservices.&lt;/p&gt;

&lt;p&gt;Process Mining can also be used to dynamically manage microservices and prioritize development efforts. But this paper sheds the light on process mining and its value during the decomposition design phase. &lt;/p&gt;

&lt;p&gt;While writing this article with the help of my colleague &lt;a href="https://www.linkedin.com/in/nizarsalman/"&gt;Nizar Salman&lt;/a&gt;, we built on work done by several scholars cited throughout the article and in the reference section, but we were mainly influenced by the work of &lt;a href="http://www.taibi.it/"&gt;Professor Davide Taibi&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Microservices?
&lt;/h2&gt;

&lt;p&gt;We have seen the use of microservices architecture grow tremendously in the past 5 years, from tech giants to smaller teams the gravitation of microservices is so strong in fact, it’s expected to become the default application architecture within the next five years. Which errors should be avoided in the migration journey while implementing the architecture in order to develop reactive and sustainable systems?&lt;/p&gt;

&lt;p&gt;Microservices allowed developers to break down large, complex monoliths into smaller services or applications. Because of their independent deployment, microservices have a lot of advantages. They can be developed in different programming languages, they can scale independently from other services, and they can be deployed on the hardware that best suits their needs even when addressing intelligent IoT applications. Moreover, because of their size, they are easier to maintain and more fault-tolerant since the failure of one service will not break the whole system, which could happen in a monolithic system. Since every microservice has its own context and set of code, each microservice can change its entire logic from the inside, but from the outside, it still does the same thing (Taibi et al., 2017a).&lt;/p&gt;

&lt;p&gt;Businesses and organizations are drifting further away from monoliths and closer towards a microservices architecture MSA for every app, website, and digital experience they develop to benefit from better agility, scalability, and resilience.&lt;/p&gt;

&lt;p&gt;If you are new to microservices and want to get a hands-on feel of the migration from a monolith to this amazing application architecture, AWS did a great job in this tutorial, &lt;a href="https://aws.amazon.com/getting-started/projects/break-monolith-app-microservices-ecs-docker-ec2/"&gt;Break a Monolith Application into Microservices&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Decomposition Overview
&lt;/h2&gt;

&lt;p&gt;Decomposing a monolithic system into independent microservices is one of the most critical and complex tasks and several practitioners claim the need for a tool to support them during the slicing phase in order to identify different possible slicing solutions (Taibi et al., 2017b)(Taibi et al., 2017c)(Taibi et al., 2018). The decomposition is usually performed manually by software architects (Soldani et al., 2018). Up to now, the only help that software architects can have is based on the static analysis of dependencies with tools such as &lt;a href="https://structure101.com/"&gt;Structure 101&lt;/a&gt; while the slicing of the system commonly is delegated to the experience of the software architect itself. Moreover, static dependency analysis tools are not able to capture the dynamic behavior of the system and run-time dependencies like frequent method calls could have an influence on both maintainability and performance. Thus, this approach to slicing is based on runtime behavior instead of only considering static dependencies.&lt;/p&gt;

&lt;p&gt;At the beginning of a transformation journey, the architects and the development team, with all their know-how and experience, develop a tailored architectural blueprint for the upcoming development. Common steps for migrating from a monolithic system to a microservices one are (Taibi et al., 2017d):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Analysis of the system structure.&lt;/strong&gt; All processes start by analyzing dependencies mainly with the support of tools (&lt;a href="https://structure101.com/"&gt;Structure 101&lt;/a&gt;, &lt;a href="https://github.com/schemaspy/schemaspy"&gt;SchemaSpy 2&lt;/a&gt;, or others)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Definition of the new system architecture.&lt;/strong&gt; Architectural guidelines or principles, and the proposal of a decomposition solution into small microservices are defined. The decomposition is always done manually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritization of feature/service development.&lt;/strong&gt; In this step, all three processes identify and prioritize the next microservices to be implemented. Some processes prioritize microservices based on customer value; others according to components with more bugs; and yet others prioritize the development of new features as microservices, expecting that, in the long run, the new ecosystem of microservices will gradually replace each feature of the existing monolith.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coding and Testing are then carried out like any other software development project.&lt;/strong&gt; Developers adopt the testing strategy they prefer. However, in some cases, testing of the different microservices is performed by doing unit testing at the microservices level and black-box testing at the integration level.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This article focuses mainly on the first two steps, supporting organizations in the analysis of the system structure and in the identification of decomposition alternatives. The architectural guidelines should be defined by the company based on their internal policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data-Driven Strategy and Process Mining
&lt;/h2&gt;

&lt;p&gt;Applications built from microservices should be as decoupled and as cohesive as possible! But how do we pick the best strategy for decomposition? Here are some common decomposition strategies (Richardson, 2017):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-&amp;gt;&lt;/strong&gt; Decompose by business capability and define services corresponding to business capabilities.&lt;br&gt;
&lt;strong&gt;-&amp;gt;&lt;/strong&gt; Decompose by domain-driven design subdomain.&lt;br&gt;
&lt;strong&gt;-&amp;gt;&lt;/strong&gt; Decompose by verb or use cases and define services that are responsible for particular actions.&lt;br&gt;
&lt;strong&gt;-&amp;gt;&lt;/strong&gt; Decompose by nouns or resources by defining a service that is responsible for all operations on entities/resources of a given type.&lt;/p&gt;

&lt;p&gt;The first two strategies are mostly abstract patterns of human decisions while the other two are based on predefined data-driven criteria which this method will focus on.&lt;br&gt;
A data-driven microservices-oriented decomposition approach based on data flow diagrams from business logic. This could deliver more rational, objective, and easy-to-understand results thanks to objective operations and data extracted from real-world business logic (Chen et al., 2017). Similarly, you can adopt process mining to analyze the business processes of a monolithic system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools and Techniques
&lt;/h2&gt;

&lt;p&gt;However, while dependency analysis tools can support the identification of static dependencies, they do not enable the identification of the full execution path. This approach combines process mining techniques and dependency analysis to recommend alternative slicing solutions.&lt;br&gt;
The approach requires the availability of an extended version of a log trace collected at runtime. For each user operation performed from the user interface (e.g., clicking on a button), or from any entry point of a system (e.g., APIs or command line), all the activities must be traced from the log files. Information about each class and method that is traversed for the execution of the operation must be included. The complete execution must be traced completely from the entry point (a click on a submission form or the beginning of an operation) to the access to the database (if any) and to the results returned to the client. An example of data reported in the log file is shown in Table 1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zKS_tuTc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Table-1-Example-Log-Traces.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zKS_tuTc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Table-1-Example-Log-Traces.png" alt="Table 1 – Example of Log Traces"&gt;&lt;/a&gt;&lt;br&gt;
Table 1 – Example of Log Traces&lt;/p&gt;

&lt;p&gt;Here, you instrument the software to produce a log. The log trace must include events that indicate entrance and exit of functions as well as database accesses. Each entry in the log also has a timestamp and a session ID, to distinguish between the usage of the same class or method from different users.&lt;br&gt;
The log trace could be collected by instrumenting the source code with Aspect-Oriented Programming, by adding the log trace into each method or with existing applications such as the &lt;a href="https://www.elastic.co/apm"&gt;Elastic APM&lt;/a&gt; or similar.&lt;br&gt;
In case the data collection is not yet in place, you can use Elastic APM, since it allows to easily instrument the code with a minor effort. For some languages (e.g. Java and Node.js) the instrumentation requires the addition of one line of code to the application configuration, specifying the type of log trace required and the logging server URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decomposition Process
&lt;/h2&gt;

&lt;p&gt;Once the log files are created, organizations can start the decomposition following this 6-step process (Taibi et al., 2019).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Execution Path Analysis
&lt;/h3&gt;

&lt;p&gt;In the first step, you identify the most frequently used execution paths with a process-mining tool. In this case, &lt;a href="https://fluxicon.com/disco/"&gt;DISCO 4&lt;/a&gt; was used to graphically represent the business processes by mining the log files. The same result can be obtained by any other alternative process-mining tool. The result is a graphical representation of the processes, reporting each class and database table used in the business processes, with a set of arrows connecting each class based on the log traces. The result of this first step produces a figure that allows to understand:&lt;/p&gt;

&lt;p&gt;• Runtime execution paths of the system. Paths never used, even if possible, are not represented in the figure.&lt;br&gt;
• Dependencies between the classes of the system. The arrows represent the dependencies between methods and classes. External dependencies to libraries or web-services are also represented.&lt;br&gt;
• The frequency of usage of each path. Process mining tools present the most used processes with thicker arrows.&lt;br&gt;
• Branches and Circular Dependencies. The graphical representation allows easy discovery of circular dependencies or branches (e.g., conditional statement that led to different path based on the input provided), in case they exist.&lt;/p&gt;

&lt;p&gt;The complete chain of arrows forms a candidate of a process. Figure 1 below represents a simplified example of one business process representing the data reported in Table 1 above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6ASRBJ8S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Figure-1-Simplified-Process-Example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6ASRBJ8S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Figure-1-Simplified-Process-Example.png" alt="Figure 1 – Simplified Process Example"&gt;&lt;/a&gt;&lt;br&gt;
Figure 1 – Simplified Process Example&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Frequency analysis of the execution paths
&lt;/h3&gt;

&lt;p&gt;The thickness of the arrows created by the &lt;a href="https://fluxicon.com/disco/"&gt;DISCO&lt;/a&gt; tool indicates the frequency of the calls between classes. This makes it possible to clearly understand which execution paths are used most frequently and which classes are rarely or never used during runtime. The output of this step is a table representing all the different execution paths with the frequency of their usage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0zqSmlkf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Table-2-Frequency-analysis-execution-path.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0zqSmlkf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Table-2-Frequency-analysis-execution-path.png" alt="Table 2 – Frequency analysis of each execution path"&gt;&lt;/a&gt;&lt;br&gt;
Table 2 – Frequency analysis of each execution path&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Removal of Circular Dependencies
&lt;/h3&gt;

&lt;p&gt;In this step, you first find circular dependencies by analyzing the execution paths reported in the table generated in the first Step. This can be done with a simple algorithm to discover cycles in the execution paths. In the case of circular dependencies, software architects should discuss with the development team how to break these cycles. One example of the patterns that can be applied to break the cycles is Inversion of Control (Martin, 2003). However, every cyclic dependency could need a different breaking solution that must be analyzed carefully. The result is a refined version of the execution path table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Identification of decomposition options
&lt;/h3&gt;

&lt;p&gt;Starting with the execution paths without cyclic dependencies obtained from Step 3, you identify different decomposition alternatives by visually inspecting the generated graphs. The candidate processes may have common sub-paths, i.e., the processes may merge or split. &lt;br&gt;
Thus, different decomposition solutions are possible. This process could also be automated by developing an algorithm that provides all different decompositions based on the paths with fewer intersections. However, in this case, you rely on the expert-based decomposition. &lt;br&gt;
As highlighted in Figure 2 below, the decomposition options need to deal with the duplication of some classes or methods. As example, the execution traces reported in Figure 2 below show that both the green and the orange execution traces use j(). Therefore, software architects could propose two decomposition alternatives. The first option includes the creation of three microservices where class E.java() is duplicated in microservice MS2 and MS3.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2W8JC2Ou--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Figure-2-Simplified-Process-Example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2W8JC2Ou--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/Figure-2-Simplified-Process-Example.png" alt="Figure 2 – Simplified Process Example"&gt;&lt;/a&gt;&lt;br&gt;
Figure 2 – Simplified Process Example&lt;/p&gt;

&lt;p&gt;The second option includes the creation of two microservices, merging MS2 and MS3. Both options have pros and cons, but the decision of merging two execution traces or splitting into different microservices must be discussed with the team. If two microservices candidates for the splitting have different purposes, it is reasonable to consider the splitting. If they are doing the same thing, then it would be better to merge them into one single microservice for example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Metric-based ranking of the decomposition options
&lt;/h3&gt;

&lt;p&gt;In this step, you identify three measures to help architects to assess the quality of the decomposition options identified in Step 4: Coupling, Number of classes per microservices, Number of classes that need to be duplicated.&lt;/p&gt;

&lt;h4&gt;
  
  
  A - Coupling
&lt;/h4&gt;

&lt;p&gt;The decomposition to microservices should minimize coupling and maximize cohesion. Coupling and cohesion can be calculated with different approaches. While coupling can be obtained from the log traces, for all the cohesion measures we also need to know about the access to the local variables of each class, which makes it impossible to calculate them from the data reported in the log traces. However, coupling is commonly considered as inversely proportional to cohesion. Therefore, a system with low coupling will have a high likelihood of having high cohesion (Jabangwe et al., 2015). We define the Coupling Between Microservice (CBM) extending the well-known Coupling Between Object (CBO) metric proposed by Chidamber and Kemerer (Chidamber and Kemerer, 1994). CBO represents the number of classes coupled with a given class (efferent couplings and afferent couplings). This coupling can occur through method calls, field accesses, inheritance, arguments, return types, and exceptions.&lt;/p&gt;

&lt;p&gt;You calculate the relative CBM for each microservice as follows:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0DIAKeHX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/CBM-per-microservice-e1586350775211.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0DIAKeHX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://anaskhattar.com/wp-content/uploads/2020/04/CBM-per-microservice-e1586350775211.png" alt="CBM for each microservice"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where Number of external Links represents the number of calls to external services used in each class of microservice. An external service linked several times by different classes of the same microservice is only counted once. External services could be other microservices, external APIs, etc. CBM is calculated for each microservice independently and presented in a table for the next step.&lt;/p&gt;

&lt;h4&gt;
  
  
  B - Number of classes per microservice
&lt;/h4&gt;

&lt;p&gt;This measure helps to understand how big the microservice identified is and to identify if there are microservices that are too big compared to others. The number of classes should be minimized since the smaller the number of classes the more independent its development can be. Considering the example reported above in Figure 2, the MS decomposition option 1 has 7 classes while option 2 has six classes.&lt;/p&gt;

&lt;h4&gt;
  
  
  C - Number of classes that need to be duplicated
&lt;/h4&gt;

&lt;p&gt;In some cases, several classes will be in common between two execution traces. As example, the method j in Class E (Figure 2) is used by two execution traces. In the example depicted in Figure 2, decomposition option 1 has one class that needs to be duplicated, while option 2 requires no classes to be duplicated. This measure helps to reason about the different slicing options, considering not only the size of the microservices but also the number of duplications, that will be then reflected in the development of the microservices. Duplicated classes should be avoided since the duplication adds to the size of the system and its maintenance, where they can be transformed into a library/dependency used by both microservices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Selection of the decomposition solution
&lt;/h3&gt;

&lt;p&gt;This is the final step where, based on the different decomposition alternatives identified in Step 4, and on the measures collected in Step 5, software architects can decide which solution to adopt by merging or splitting existing processes. Software architects could consider the recommendations provided by this decomposition process and discuss with the team which solution is most suitable for them, considering the organizational structure. This process does not recommend the best decomposition solution but provides a reasoning framework on the possible decomposition options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;System logs offer a big opportunity to inform the decomposition of IT systems. By applying process mining to logs, main activities and transactions can be discovered. The architect is extended by invaluable and visual information that helps inform better design based on data and real needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;Taibi, Davide &amp;amp; Systä, Kari. (2019). &lt;em&gt;From Monolithic Systems to Microservices: A Decomposition Framework based on Process Mining.&lt;/em&gt;&lt;br&gt;
Taibi, D., Lenarduzzi, V., and Pahl, C. (2018). &lt;em&gt;Architectural patterns for microservices: a systematic mapping study.&lt;/em&gt;&lt;br&gt;
Soldani, J., Tamburri, D. A., and Heuvel, W.-J. V. D. (2018). &lt;em&gt;The pains and gains of microservices: A systematic grey literature review.&lt;/em&gt;&lt;br&gt;
Taibi, D., Lenarduzzi, V., Janes, A., Liukkunen, K., and Ah- mad, M. O. (2017a). &lt;em&gt;Comparing requirements decomposition within the scrum, scrum with kanban, xp, and banana development processes.&lt;/em&gt;&lt;br&gt;
Taibi, D., Lenarduzzi, V., and Pahl, C. (2017b). &lt;em&gt;Processes, motivations, and issues for migrating to microservices architectures: An empirical investigation.&lt;/em&gt;&lt;br&gt;
Taibi, D., Lenarduzzi, V., Pahl, C., and Janes, A. (2017c). &lt;em&gt;Microservices in agile software development: a workshop-based study into issues, advantages, and disadvantages.&lt;/em&gt;&lt;br&gt;
Richardson, C. (2017). &lt;em&gt;Pattern: Microservice architecture.&lt;/em&gt;&lt;br&gt;
Jabangwe, R., Bo ̈rstler, J., Smite, D., and Wohlin, C. (2015). &lt;em&gt;Empirical evidence on the link between object-oriented measures and external quality attributes: A systematic literature review.&lt;/em&gt;&lt;br&gt;
Martin, R. C. (2003). &lt;em&gt;Agile Software Development: Principles, Patterns, and Practices.&lt;/em&gt;&lt;br&gt;
Chidamber, S. R. and Kemerer, C. F. (1994). &lt;em&gt;A metrics suite for object oriented design.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>tutorial</category>
      <category>microservices</category>
      <category>processmining</category>
    </item>
  </channel>
</rss>
