<?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>Forem: Tarant</title>
    <description>The latest articles on Forem by Tarant (@tarant).</description>
    <link>https://forem.com/tarant</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%2Forganization%2Fprofile_image%2F6881%2F39bef775-e491-42e5-8281-186d1d9debdd.png</url>
      <title>Forem: Tarant</title>
      <link>https://forem.com/tarant</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tarant"/>
    <language>en</language>
    <item>
      <title>Implementing a simple actor in Tarant</title>
      <dc:creator>Alvaro</dc:creator>
      <pubDate>Mon, 24 Apr 2023 19:09:26 +0000</pubDate>
      <link>https://forem.com/tarant/implementing-a-simple-actor-in-tarant-2d80</link>
      <guid>https://forem.com/tarant/implementing-a-simple-actor-in-tarant-2d80</guid>
      <description>&lt;p&gt;Do you want to see how to implement simple actor in Tarant and start focusing on your domain logic? What our next video.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/z-x0phbcOk8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/z-x0phbcOk8"&gt;﻿Watch the video on Youtube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If that is to long here is a snippet image as TL;DR;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--apvhSeO9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/tarantx/tarant-page/main/static/img/ping-actor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--apvhSeO9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/tarantx/tarant-page/main/static/img/ping-actor.png" alt="" width="800" height="762"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>coding</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Tarant Fullstack Actor System in 5 minutes</title>
      <dc:creator>Alvaro</dc:creator>
      <pubDate>Mon, 24 Apr 2023 18:57:29 +0000</pubDate>
      <link>https://forem.com/tarant/tarant-fullstack-actor-system-in-5-minutes-455m</link>
      <guid>https://forem.com/tarant/tarant-fullstack-actor-system-in-5-minutes-455m</guid>
      <description>&lt;p&gt;Are you tired of struggling with complex actor systems that require you to write complex code just to manage simple communication between your application's components?&lt;/p&gt;

&lt;p&gt;If so, we have great news for you! We are excited to announce the release of our new actor system, built from the ground up using the latest version of TypeScript! Our new full-stack actor system is designed to make building reliable, high-performance, reactive systems a breeze, so you can focus on building great applications that customers love.&lt;/p&gt;

&lt;p&gt;To help you get started, we've put together a short 5-minute video that showcases some of the system's key features.&lt;/p&gt;

&lt;p&gt;We believe that our new actor system represents a major milestone in modern software development, and we're excited to share it with you. So sit back, relax, and watch the video below to see how our new actor system can help you tackle some of the toughest challenges in modern application development!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/2z5tiyl3N9I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/2z5tiyl3N9I"&gt;﻿Watch the video on Youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>showdev</category>
      <category>coding</category>
    </item>
    <item>
      <title>Website Revamp</title>
      <dc:creator>Alvaro</dc:creator>
      <pubDate>Tue, 18 Apr 2023 18:10:17 +0000</pubDate>
      <link>https://forem.com/tarant/website-revamp-25g5</link>
      <guid>https://forem.com/tarant/website-revamp-25g5</guid>
      <description>&lt;p&gt;Hello welcome everyone to the first blog post of the revamped website.&lt;/p&gt;

</description>
      <category>website</category>
      <category>product</category>
    </item>
    <item>
      <title>Tarant Cloud: Talk, Collaborate and Solve</title>
      <dc:creator>Alvaro</dc:creator>
      <pubDate>Mon, 17 Apr 2023 21:19:16 +0000</pubDate>
      <link>https://forem.com/tarant/tarant-cloud-talk-collaborate-and-solve-1aj4</link>
      <guid>https://forem.com/tarant/tarant-cloud-talk-collaborate-and-solve-1aj4</guid>
      <description>&lt;p&gt;&lt;a href="/img/why-tarant-post-title.png" class="article-body-image-wrapper"&gt;&lt;img src="/img/why-tarant-post-title.png" alt="An approach for a common abstraction level"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The current scenario
&lt;/h2&gt;

&lt;p&gt;Working on software based solutions is a complex task that requires the effort of a cohort of very different roles that interact together to design, build, &lt;br&gt;
test, deploy and monitor the product. Complexity grows with requirements, given more features, less reliable is to build on top of that software and &lt;br&gt;
becomes problematic. The community worked on different solutions for all the set of problems that we, as software developers, need to solve to put our &lt;br&gt;
software, working, in production.&lt;/p&gt;

&lt;p&gt;These solutions span lots of different aspects of the essential complexity of our work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We have frameworks that help us design a solution abstracting ourselves from the complexities of the underlying platform.&lt;/li&gt;
&lt;li&gt;We testing libraries that allows us to verify our applications to ensure correctness.&lt;/li&gt;
&lt;li&gt;We have tools that allows us to monitor our applications in production.&lt;/li&gt;
&lt;li&gt;We have toolkits that allows us to deploy our infrastructure in a scalable way.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there are many other cross-cutting concerns, like security, performance, accessibility, and so on.&lt;/p&gt;

&lt;p&gt;We as an industry, are having a bad time handling all this complexity properly, as we are still young and growing extremely fast. With growth, comes also additional&lt;br&gt;
problems, like sociotechnical challenges, resource management, financial operations and a wide list of others that could be included here.&lt;/p&gt;

&lt;p&gt;For this post, we are going to talk about production complexity and billing.&lt;/p&gt;

&lt;p&gt;Both &lt;a href="https://github.com/kanekotic"&gt;@kanekotic&lt;/a&gt; and &lt;a href="https://github.com/kmruiz"&gt;myself&lt;/a&gt; are software developers, leading teams of different sizes and diversities,&lt;br&gt;
with different problems, building software.  We are still doing this from different aspects of the delivery timeline of a project. &lt;br&gt;
This allows us to understand the software industry from a wider level and to understand where and how we are struggling.&lt;/p&gt;

&lt;p&gt;Digging on the feedback we've gathered, we've found the following list of challenges that are common and hardly resolved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do we ensure the scalability of our system within a reasonable cost?&lt;/li&gt;
&lt;li&gt;How do we ensure the evolution of our system to the requirements within a reasonable timeframe?&lt;/li&gt;
&lt;li&gt;How do we simplify the overall architecture while increasing the capacity of adaptation?&lt;/li&gt;
&lt;li&gt;How do we ensure that the application is behaving correctly in production and that we detect when it doesn't?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me give an example of all these cases:&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we ensure the scalability of our system within a reasonable cost?
&lt;/h3&gt;

&lt;p&gt;System scalability is a complex topic, as it depends on usage patterns of customers. Essentially, and ideally, you want to scale down your application and &lt;br&gt;
dependencies when there is less load in your systems, reducing costs, but you want to increase the capacity of your system moments before the load increases,&lt;br&gt;
so you can handle transparently with the minimum amount of cost increase, your workload.&lt;/p&gt;

&lt;p&gt;However, there are a few challenges here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do we know when to scale up and down?&lt;/li&gt;
&lt;li&gt;How much does it cost to scale up and down?&lt;/li&gt;
&lt;li&gt;What do we scale up and down and how?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these challenges are tackled by the &lt;strong&gt;serverless model&lt;/strong&gt;, with a pay per consumption model, with scale-to-zero capabilities. Let's take an example on how&lt;br&gt;
&lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt; handles it, as it's of the main leaders in serverless computing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To use an AWS Lambda, you just need to upload a .zip to Lambda, and AWS takes care of everything.&lt;/li&gt;
&lt;li&gt;You have to choose CPU and Memory, this affects how the Lambda is billed. Essentially, Lambda would choose the suitable amount of CPU based on the memory allocated, but it's common to overprovision memory for more CPU power.&lt;/li&gt;
&lt;li&gt;Lambdas are billed every 100ms, so a function that takes a few ms is billed for 100ms.&lt;/li&gt;
&lt;li&gt;Lambdas also suffer &lt;code&gt;cold starts&lt;/code&gt;, what essentialy means that scalability is affected under some runtimes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lambdas are a wonderful tool, but they are also problematic for billing provisioning. How much is a lambda going to cost overall per month? It's extremely hard&lt;br&gt;
to measure properly. There are some calculators, like the one from &lt;a href="https://dashbird.io/lambda-cost-calculator/"&gt;dashbird&lt;/a&gt; that does some simple calculations but&lt;br&gt;
it's often not reliable enough because the Lambda billing model is extremely complex.&lt;/p&gt;

&lt;p&gt;There are other solutions, of course, like VM reservation, using Kubernetes or something like Fargate, to simplify billing, but they have other types of challenges, &lt;br&gt;
like how many VMs should we reserved, what size, and how to ensure workload is distributed evenly.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we ensure the evolution of our system to the requirements within a reasonable timeframe?
&lt;/h3&gt;

&lt;p&gt;Software that is useful changes. With these changes, comes technical debt, and an increase amount of complexity. This complexity likely increases with&lt;br&gt;
accidential decisions that weren't aware of the future of the software itself. It is common to patch forward features into the current design until&lt;br&gt;
the software development process becomes a bottleneck.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we simplify the overall architecture while increasing the capacity of adaptation?
&lt;/h3&gt;

&lt;p&gt;The actor model tries to solve these issues by simplifying the overall architecture of software. Instead of complex patterns and layered softwares that&lt;br&gt;
fail to handle concurrency, transactionality and reduced performance, we just have a set of long living objects that interact between them in an ordered&lt;br&gt;
manner. Also, tarant has other properties, like &lt;code&gt;actor universality&lt;/code&gt; where an actor can run transparently both in a client application and a server.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we ensure that the application is behaving correctly in production and that we detect when it doesn't?
&lt;/h3&gt;

&lt;p&gt;Here raises the complexity, as developers need to monitor their software in production, but there is a language gap between how we monitor systems and how we build&lt;br&gt;
them. It's not uncommon finding developers uncomfortable understanding how to scale their system based on CPU or memory usage. Nowadays, for lots&lt;br&gt;
of systems, disk usage has been delegated to databases, but CPU, Memory, Network, Locks... are still relevant for production-level applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do we see the future of computing in tarant?
&lt;/h2&gt;

&lt;p&gt;We want teams to talk, communicate and solve in a common abstraction level. For us, complexity lies in jumping across different levels of abstractions during&lt;br&gt;
the design, development and delivery process. Information is lost during this long jumps, requirements become unclear across teams and tight deadlines forces&lt;br&gt;
teams to focus on high-visibility low-value work, delivering uncomplete features, without security best practices, on top of expensive infrastructure.&lt;/p&gt;

&lt;p&gt;We are sure that using the actor model, and specific conventions and best practices on top of that, can raise the bar. By increasing the abstraction level, we can&lt;br&gt;
assume optimisations, simplify the development model and improve how monitoring and observability works. To this, to work, means that we are not developing&lt;br&gt;
anything generic, but will built on top of tarant and for tarant.&lt;/p&gt;

&lt;p&gt;Our principles are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No additional concepts: all features are tarant based and using already known tarant concepts.

&lt;ul&gt;
&lt;li&gt;Only think about actors, topics, messages and systems.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Secure by default

&lt;ul&gt;
&lt;li&gt;Secure options &lt;strong&gt;must&lt;/strong&gt; be easier, or as easy as insecure ones.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Simplicity by design

&lt;ul&gt;
&lt;li&gt;Design your application, we build your infrastructure on top of that.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;No surprises

&lt;ul&gt;
&lt;li&gt;Scale up and down without a surprise on your bill.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We have lots of ideas, we have lots of opportunities, and we want to build together. We are developing a closed beta that is already accepting requests to test&lt;br&gt;
the cloud. We will be giving access incrementally, &lt;em&gt;totally free&lt;/em&gt; to the initial, limited version of the cloud.&lt;br&gt;
If you want to know more about tarant, &lt;a href="https://www.tarant.dev/docs/category/quick-start"&gt;check our tutorials&lt;/a&gt;. &lt;br&gt;
If you want to join the beta, check &lt;a href="https://dev.to/"&gt;our home page, as we have a contact form in there&lt;/a&gt;. &lt;br&gt;
No private information is shared with anyone, and the only communications we will share are strictly related to the beta itself. &lt;br&gt;
If you are interested on talking with us directly, we have a &lt;a href="https://app.gitter.im/#/room/#tarantx_general"&gt;gitter room&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>product</category>
    </item>
    <item>
      <title>Why are we building the tarant cloud?</title>
      <dc:creator>Alvaro</dc:creator>
      <pubDate>Mon, 17 Apr 2023 12:44:09 +0000</pubDate>
      <link>https://forem.com/tarant/why-are-we-building-the-tarant-cloud-4cjf</link>
      <guid>https://forem.com/tarant/why-are-we-building-the-tarant-cloud-4cjf</guid>
      <description>&lt;p&gt;Working on software based solution is a complex task that requires a cohort of very different roles that interact together to design, build, test, deploy and monitor&lt;br&gt;
the product. Complexity grows with requirements, given more features, less reliable is to build on top of that software and becomes problematic. The community&lt;br&gt;
worked on different solutions for all the set of problems that we, as software developers, need to solve to put our software, working, in production.&lt;/p&gt;

&lt;p&gt;These solutions span lots of different aspects of the essential complexity of our work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We have frameworks that help us design a solution abstracting ourselves from the complexities of the underlying platform.&lt;/li&gt;
&lt;li&gt;We testing libraries that allows us to verify our applications to ensure correctness.&lt;/li&gt;
&lt;li&gt;We have tools that allows us to monitor our applications in production.&lt;/li&gt;
&lt;li&gt;We have toolkits that allows us to deploy our infrastructure in a scalable way.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there are many other cross-cutting concerns, like security, performance, accessibility, and so on.&lt;/p&gt;

&lt;p&gt;We as an industry, are having a bad time handling all this complexity properly, as we are still young and growing extremely fast. With growth, comes also additional&lt;br&gt;
problems, like sociotechnical challenges, resource management, financial operations and a wide list of others that could be included here.&lt;/p&gt;

&lt;p&gt;For this post, we are going to talk about production complexity and billing.&lt;/p&gt;

&lt;p&gt;Both &lt;a href="https://github.com/kanekotic"&gt;@kanekotic&lt;/a&gt; and &lt;a href="https://github.com/kmruiz"&gt;myself&lt;/a&gt; are software developers: we've are, and been leading teams of &lt;br&gt;
different sizes and diversities, with different problems, build software.  We are still doing this from different aspects of the delivery timeline of a project. &lt;br&gt;
This allows us to understand the software industry from a wider level and to understand where and how we are struggling.&lt;/p&gt;

&lt;p&gt;Digging on the feedback we've gathered, we've found the following list of challenges that are common and hardly resolved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do we ensure the scalability of our system within a reasonable cost?&lt;/li&gt;
&lt;li&gt;How do we ensure the evolution of our system to the requirements within a reasonable timeframe?&lt;/li&gt;
&lt;li&gt;How do we simplify the overall architecture while increasing the capacity of adaptation?&lt;/li&gt;
&lt;li&gt;How do we ensure that the application is behaving correctly in production and that we detect when it doesn't?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me give an example of all these cases:&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we ensure the scalability of our system within a reasonable cost?
&lt;/h3&gt;

&lt;p&gt;System scalability is a complex topic, as it depends on usage patterns of customers. Essentially, and ideally, you want to scale down your application and &lt;br&gt;
dependencies when there is less load in your systems, reducing costs, but you want to increase the capacity of your system moments before the load increases,&lt;br&gt;
so you can handle transparently with the minimum amount of cost, your workload.&lt;/p&gt;

&lt;p&gt;However, there are a few challenges here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do we know when to scale up and down?&lt;/li&gt;
&lt;li&gt;How much does it cost to scale-up and down?&lt;/li&gt;
&lt;li&gt;What do we scale up and down and how?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these challenges are tackled by the &lt;strong&gt;serverless model&lt;/strong&gt;, with a pay per consumption model, with scale-to-zero capabilities. Let's take an example on how&lt;br&gt;
&lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt; handles it, as it's of the main leads in serverless computing.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>product</category>
    </item>
  </channel>
</rss>
