<?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: Siri Shamendra</title>
    <description>The latest articles on DEV Community by Siri Shamendra (@shamendra).</description>
    <link>https://dev.to/shamendra</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%2F358895%2Ff18aff54-1466-44dc-b124-2a7a1d0d13c2.gif</url>
      <title>DEV Community: Siri Shamendra</title>
      <link>https://dev.to/shamendra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shamendra"/>
    <language>en</language>
    <item>
      <title>Evolution of Microfrontends 🚀</title>
      <dc:creator>Siri Shamendra</dc:creator>
      <pubDate>Wed, 17 Apr 2024 23:03:18 +0000</pubDate>
      <link>https://dev.to/shamendra/evolution-of-microfrontends-1mgj</link>
      <guid>https://dev.to/shamendra/evolution-of-microfrontends-1mgj</guid>
      <description>&lt;h2&gt;
  
  
  Hello Son 👶🏻,
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I know that you are a genius creator of things using Legos.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine your traditional front-end application as a non-composable Viking City castle toy. There you get what the toy company built for you and you cannot modify or change later as you wish.&lt;/p&gt;

&lt;p&gt;But what if you build your castle with 5 other friends at the same time as you wish using Legos? These legos might have been designed by another toy company to be compatible with the original Legos you have and one of your friends is using that to build part of your castle. &lt;/p&gt;

&lt;p&gt;So consider your Lego work above as our micro frontend. This shares the same concepts as the micro-services. People understood that by using this they could achieve below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, the advantages of using micro-frontends are:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Faster Changes&lt;/strong&gt;: You can make updates or add new features more quickly because you're only working on one small part at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Independent Development&lt;/strong&gt;: Different teams can work on different parts of the frontend without stepping on each other's toes. They can develop and deploy their parts independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Easier Maintenance&lt;/strong&gt;: If something goes wrong in one part, it's easier to find and fix the problem without affecting the rest of the frontend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: As your project grows, it's easier to scale because you can add new features or modules without having to rebuild the entire frontend from scratch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiyqlmuub5m6nj4tcxt8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiyqlmuub5m6nj4tcxt8c.png" alt="Image description" width="800" height="699"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's explain this to your Dad 🧔🏻‍♂️!
&lt;/h2&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Evolution 🚀:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow51h4ckc1oqawfjnzwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow51h4ckc1oqawfjnzwq.png" alt="Image description" width="800" height="336"&gt;&lt;/a&gt;&lt;br&gt;
GW = Gateway / FE = Frontend / BE = Backend&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monolithic:&lt;/strong&gt; In the early days of web development, applications were built as monoliths. This means that both the frontend (the user interface) and the backend (the server-side logic and database) were tightly coupled together in a single codebase. Making changes or adding features required modifying the entire application, which could be time-consuming and risky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend + Backend Separation&lt;/strong&gt;: As web applications grew in complexity, developers began separating the frontend and backend components. This separation allowed for more specialized teams to work on each part of the application independently. The frontend communicated with the backend through APIs (Application Programming Interfaces), enabling better scalability and flexibility. However, the frontend itself often remained monolithic, making it challenging to scale or modify without impacting the entire frontend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices + Frontend:&lt;/strong&gt; With the rise of microservices architecture, developers started decomposing the backend into smaller, independently deployable services, each responsible for a specific business function. This approach improved scalability, fault isolation, and development agility. However, the frontend remained relatively monolithic, presenting challenges in coordinating frontend updates with changes in the microservices architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microfrontend + Microservices:&lt;/strong&gt; The evolution culminates in the adoption of microfrontend architecture alongside microservices. Microfrontend architecture extends the principles of microservices to the frontend layer, allowing frontend components to be developed, deployed, and scaled independently. Each micro-frontend represents a distinct part of the user interface and can be owned and maintained by separate teams. This approach enables greater flexibility, faster iteration times, and improved autonomy for frontend development teams.&lt;/p&gt;

&lt;p&gt;Most importantly we &lt;strong&gt;need to remember the decision to make your frontend a micro-frontend is based on a lot of facts&lt;/strong&gt; including your requirements and the evolution of the application in the future or now with the priority in mind.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you feel that you want to dig more into concepts read the article at Martin Fowler's website &lt;a href="https://martinfowler.com/articles/micro-frontends.html"&gt;here&lt;/a&gt;.&lt;/em&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  🏋️‍♂️
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Enough talking! Let's make learn by doing. We are going to build a real-life micro-frontend with Next.js, Nuxt.js, and the latest Angular Framework in &lt;strong&gt;my next article&lt;/strong&gt;. Dad's will love it! Stay tuned!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Next.js is a React framework / Nuxt.js is a Vue Framework&lt;/em&gt;&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>microfrontends</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Tutorial Hell : 5 steps to get away</title>
      <dc:creator>Siri Shamendra</dc:creator>
      <pubDate>Sat, 06 Apr 2024 22:30:43 +0000</pubDate>
      <link>https://dev.to/shamendra/tutorial-hell-5-ways-to-get-away-2ec7</link>
      <guid>https://dev.to/shamendra/tutorial-hell-5-ways-to-get-away-2ec7</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;About &lt;strong&gt;in5Steps&lt;/strong&gt; series:&lt;br&gt;
Designed for humans by keeping memorization in mind. &lt;a href="https://en.wikipedia.org/wiki/Miller%27s_law"&gt;Read more&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have you ever found yourself feeling frustrated after scouring through numerous articles in search of a solution on Google? It's a common experience many of us encounter.&lt;/p&gt;

&lt;p&gt;Once you formed a habit you become a slave of your own habit. I am pretty sure that most of us who started with Google, might click on at least 2 or 3 search results with the shift key to open up in different tabs and go through one by one. Then we see different approaches or expired documents that is totally irrelevant to what we need today. Because of that I do look at the Date of the article before I click on the search result.&lt;/p&gt;

&lt;p&gt;For an example look at the example below. You will get the legacy documentation at the first and a one outdated result among first few results. If you start with knowing less, there is a high chance to explore all content and learn something outdated first. &lt;/p&gt;

&lt;h2&gt;
  
  
  Then you have to unlearn it first to learn the right thing. Its expensive.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrf6v6iagotp7cd0szya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrf6v6iagotp7cd0szya.png" alt="Image description" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tutorial hell refers to the habit of constantly consuming tutorials without applying the knowledge gained or taking meaningful steps towards practical application or independent problem-solving. Escaping tutorial hell requires a shift in mindset and approach.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow these 5 smart ways to make it right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Write down what you really want:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Clearly define your objectives and requirements for the authentication system you want to build.&lt;/p&gt;

&lt;p&gt;Someone said once "If you write it down, you can make it happen". So writing it down helps you to teach yourself a discipline to focus on nonsense and avoid reading something else as a tutorial. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Talk to few experts:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Engage in discussions with knowledgeable individuals in the field of your learning scope.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Listen to the people who are doing it in real life for sometime are the best people to talk about that. So listen to real doers before you learn that is the best idea that you can do easily.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Read what is that community is suggesting:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stay updated with community forums, blogs, and resources to understand the latest trends, tools, and best practices. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TIP:&lt;/strong&gt; &lt;em&gt;Usually official documentations include some great examples with tutorials. But some documentations are still like a book of references.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is one of the most important things in this 5 steps. Even though you have to limit the resources for tutorials, you shouldn't limit your readings to grab the knowledge about what is happening in the industry at the moment. News and Learning something by following tutorials are two different things.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Pick the best after the above exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Evaluate the suggestions and feedback received from experts and the community to make an informed decision on the most suitable approach and technologies. Then you are able to finally find the best tutorial and focus on it. Make your own short note. We have wrote many things in the books when we don't use computers few decades ago. Writing something down makes our memory more strong. So I suggest to write it down.  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Limiting your source of learning to few resources make it a more straightforward and avoid the tutorial hell nicely with a discipline in our mind.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Repetition, Repetition and Repetition:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Focusing on iterative improvements and learning from experiences to avoid getting stuck in tutorial-based learning cycles.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BONUS OUTSIDE THE HELL:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many of us used to follow video tutorials. But sometimes the tutorials with only interactive content works really well. I am following &lt;a href="https://educative.io/"&gt;educative&lt;/a&gt; for sometime to learn different things and that works nicely with me. So choosing the right learning method is also very important.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff38laruhpyqnbut37z0q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff38laruhpyqnbut37z0q.jpg" alt="Image description" width="315" height="59"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>tutorial</category>
      <category>learning</category>
      <category>in5steps</category>
    </item>
    <item>
      <title>Explain AWS Lambda to your EC2 guy in 5 steps</title>
      <dc:creator>Siri Shamendra</dc:creator>
      <pubDate>Mon, 11 Dec 2023 21:36:32 +0000</pubDate>
      <link>https://dev.to/shamendra/explain-aws-lambda-to-your-ec2-guy-in-5-steps-2jha</link>
      <guid>https://dev.to/shamendra/explain-aws-lambda-to-your-ec2-guy-in-5-steps-2jha</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;About &lt;strong&gt;in5Steps&lt;/strong&gt; series:&lt;br&gt;
Designed for humans by keeping memorization in mind. &lt;a href="https://en.wikipedia.org/wiki/Miller%27s_law"&gt;Read more&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 1: EC2 Instances vs. AWS Lambda
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft34oir37clowoeus5oka.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft34oir37clowoeus5oka.jpg" alt="Image description" width="532" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EC2 instances are like owning dedicated office spaces, where developers manage the infrastructure, scale manually, while AWS Lambda operates as flexible co-working spaces, where infrastructure management is abstracted, scaling occurs automatically, and developers focus solely on executing specific tasks with code functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Deployment and Scaling Differences
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zv9w01nyru1igo1s5ub.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zv9w01nyru1igo1s5ub.jpg" alt="Image description" width="509" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploying applications on EC2 involves configuring servers, managing load balancing, and manually scaling resources, whereas, with AWS Lambda, developers upload functions directly, allowing for automatic scaling and minimal configuration, adjusting resources based on incoming events or requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Cost and Resource Management
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx01eix0ahet7ksnuk54s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx01eix0ahet7ksnuk54s.jpg" alt="Image description" width="545" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EC2 instances bill based on allocated resources, requiring manual scaling adjustments and steady cost regardless of usage, whereas AWS Lambda follows a pay-per-use model, charging only for function execution time, optimizing resource allocation and cost-efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Application Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsubif2rs76f22zqfu7p7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsubif2rs76f22zqfu7p7.jpg" alt="Image description" width="741" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EC2-based architectures demand fixed structures with developers managing infrastructure, databases, and application logic, whereas AWS Lambda facilitates a modular, microservices-oriented approach, abstracting infrastructure concerns and enabling seamless integration with other AWS services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Flexibility and Development Focus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpexzoth5weasodb6it9e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpexzoth5weasodb6it9e.jpg" alt="Image description" width="461" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EC2 development often involves juggling server configurations, diverting attention from pure code development, while AWS Lambda allows developers to concentrate solely on writing efficient, task-specific functions, eliminating server management burdens and streamlining development efforts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff38laruhpyqnbut37z0q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff38laruhpyqnbut37z0q.jpg" alt="Image description" width="315" height="59"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>lambda</category>
      <category>in5steps</category>
    </item>
  </channel>
</rss>
