<?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: Chanaka Fernando</title>
    <description>The latest articles on DEV Community by Chanaka Fernando (@chanakaudaya).</description>
    <link>https://dev.to/chanakaudaya</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%2F219251%2F9ed9decf-2be4-4d8a-8e0d-f1277d49c04c.jpeg</url>
      <title>DEV Community: Chanaka Fernando</title>
      <link>https://dev.to/chanakaudaya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chanakaudaya"/>
    <language>en</language>
    <item>
      <title>The expanding sidecar pattern for microservices with ballerina sidecar</title>
      <dc:creator>Chanaka Fernando</dc:creator>
      <pubDate>Sat, 05 Oct 2019 04:36:15 +0000</pubDate>
      <link>https://dev.to/chanakaudaya/the-expanding-sidecar-pattern-for-microservices-with-ballerina-sidecar-25l3</link>
      <guid>https://dev.to/chanakaudaya/the-expanding-sidecar-pattern-for-microservices-with-ballerina-sidecar-25l3</guid>
      <description>&lt;p&gt;The microservices architecture pattern is designed to be distributed in nature. But recently, we have observed that this distribution of responsibility has gone beyond the microservices itself. With the invent of the very first "Service Mesh" sidecar, people realized that microservices are not small enough and there is more room for improvement. This article discusses how the sidecar pattern is expanding within the microservices architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@chanakaudaya/the-expanding-sidecar-pattern-for-microservices-with-ballerina-sidecar-216a0dbe88ea"&gt;https://medium.com/@chanakaudaya/the-expanding-sidecar-pattern-for-microservices-with-ballerina-sidecar-216a0dbe88ea&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>microservices</category>
      <category>devops</category>
    </item>
    <item>
      <title>Build a CICD pipeline for WSO2 EI with Jenkins</title>
      <dc:creator>Chanaka Fernando</dc:creator>
      <pubDate>Fri, 04 Oct 2019 13:18:35 +0000</pubDate>
      <link>https://dev.to/chanakaudaya/build-a-cicd-pipeline-for-wso2-ei-with-jenkins-3d3a</link>
      <guid>https://dev.to/chanakaudaya/build-a-cicd-pipeline-for-wso2-ei-with-jenkins-3d3a</guid>
      <description>&lt;p&gt;WSO2 Enterprise Integrator is an open-source, light-weight, battle-tested, hybrid integration platform which comes with Apache 2.0 license. In this post, I’m going to discuss how you can build a CICD pipeline with WSO2 EI and Jenkins to automate the development and deployment process.&lt;/p&gt;

&lt;p&gt;The full medium post can be found in the below link.&lt;br&gt;
&lt;a href="https://medium.com/@chanakaudaya/build-a-cicd-pipeline-for-wso2-ei-with-jenkins-73227ebf104f"&gt;https://medium.com/@chanakaudaya/build-a-cicd-pipeline-for-wso2-ei-with-jenkins-73227ebf104f&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>tutorial</category>
      <category>github</category>
    </item>
    <item>
      <title>Open sourcing the Solutions Architecture Patterns</title>
      <dc:creator>Chanaka Fernando</dc:creator>
      <pubDate>Sun, 22 Sep 2019 17:14:32 +0000</pubDate>
      <link>https://dev.to/chanakaudaya/open-sourcing-the-solutions-architecture-patterns-57nm</link>
      <guid>https://dev.to/chanakaudaya/open-sourcing-the-solutions-architecture-patterns-57nm</guid>
      <description>&lt;p&gt;Solutions Architects (SAs) are the people who convert deep technical knowledge into a format that can be understood by both technical and non-technical people. They are the bridge between product engineers and salespeople. It is so strange that there is no common knowledge base (KB) that has been shared in the open-source community related to solutions architecture.&lt;/p&gt;

&lt;p&gt;That was the motivation for me to build such a KB which can be reused by SAs regardless of which technology stack they are working with or promoting. I have started small an initiated a GitHub repository and started contributing solutions architecture patterns which I learn from other people and learn while I’m working as a SA. Today, I have released the 0.3 version of this repository with a set of new solutions architecture patterns. Here is the GitHub repository link for this repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/chanakaudaya/solutions-architecture-patterns" rel="noopener noreferrer"&gt;Solutions-Architecture-Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The architecture patterns which are discussed here are not my own inventions. Rather, they are common patterns we found day in day out working as Solution Architects. The below mentioned diagram is a sample architecture pattern that is described in the repository.&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%2Fgithub.com%2Fchanakaudaya%2Fsolutions-architecture-patterns%2Fblob%2Fmaster%2Fvendor-neutral%2FMicoservices-Security-Pattern-Policy-Based-OPA.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%2Fgithub.com%2Fchanakaudaya%2Fsolutions-architecture-patterns%2Fblob%2Fmaster%2Fvendor-neutral%2FMicoservices-Security-Pattern-Policy-Based-OPA.png" alt="Microservices-Security-Policy-Based"&gt;&lt;/a&gt;&lt;br&gt;
Figure: Microservices Security Pattern&lt;/p&gt;

&lt;p&gt;This repository is mainly divided into 2 categories. Those are,&lt;br&gt;
1) Vendor Neutral&lt;br&gt;
2) Vendor Specific&lt;/p&gt;

&lt;p&gt;Vendor Neutral pattern category contains solutions architecture patterns which are not restricted to a specific vendor or technology stack. The architectures discussed here can be implemented with multiple vendors as well as with one vendor. But there are no special remarks on a specific vendor in most cases. There are some patterns that utilize specific technologies. But those are very rare.&lt;/p&gt;

&lt;p&gt;Vendor Specific pattern category contains solutions architecture patterns that are specific to a given vendor or technology. These architecture are bound to respective vendors and their products. This is an area in which we are expecting some contributions from people working with these vendors since we have not worked with all the vendors mentioned in the repository.&lt;/p&gt;

&lt;p&gt;We have started this project with the goal of building an open source community around solutions architecture discipline and a common ground where people can share their knowledge, ideas, and suggestions. This is still early stages and we have 65+ GH stars and 15+ GH forks as of this writing.&lt;/p&gt;

&lt;p&gt;We would like to share an open invitation to Solutions Architects/ Engineers who works with enterprise software products and solutions to come and join with us to build a wider community around the technologies we build. You can send your contributions to the below GitHub repository link.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/chanakaudaya/solutions-architecture-patterns" rel="noopener noreferrer"&gt;Solutions-Architecture-Patterns&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
    </item>
    <item>
      <title>A story about 3 modern programming languages</title>
      <dc:creator>Chanaka Fernando</dc:creator>
      <pubDate>Tue, 10 Sep 2019 16:43:00 +0000</pubDate>
      <link>https://dev.to/chanakaudaya/a-story-about-3-modern-programming-languages-2acn</link>
      <guid>https://dev.to/chanakaudaya/a-story-about-3-modern-programming-languages-2acn</guid>
      <description>&lt;p&gt;I used to be a part of a team that developed a modern programming language targetting enterprise software. After spending 2 years designing, implementing and using that programming language, I’ve moved into a different job role where I became a user of many technologies including the so-called programming language and many other modern programming languages.&lt;/p&gt;

&lt;p&gt;Today (10th September 2019) is a special day for that programming language. “Ballerina”, a programming language designed for implementing modern, network-aware, cloud-native applications has released the GA 1.0 today. It is a great achievement by a team of passionate individuals who spent days and nights until today to make it a reality. As I mentioned before, I have started using different technologies as part of my new job role as a solutions architect (who build things in addition to do presentations).&lt;/p&gt;

&lt;p&gt;Here are the 3 programming languages I started learning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go — The programming language designed by Google and used by many new open-source projects including kubernetes.&lt;/li&gt;
&lt;li&gt;Rust — The programming language designed by Mozilla research as a replacement to C (yes it is the C you know).&lt;/li&gt;
&lt;li&gt;Ballerina — The programming language designed by WSO2 to make enterprise application programming fun.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Go is for the majority
&lt;/h1&gt;

&lt;p&gt;If you go back 5 years, within the enterprise software world, you have found 2 sets of programmers running the show. Java and .Net programmers. Even though they kind of had a love and hate relationship with the respective languages, they were looking for a better alternative. Go fill that gap with a bang. Go’s design decisions and the modern features made these programmers fell in love with go and the ecosystem they built around the language made it so easier for these 2 types of programmers to adopt this so fast. Even though go doesn’t have a fair share of the market (overall), it is on its way to becoming a thing in the enterprise software world.&lt;/p&gt;

&lt;h1&gt;
  
  
  Rust is for the passionate
&lt;/h1&gt;

&lt;p&gt;While enterprise software battlefield is divided into Java and .Net, the systems programming has been dominated by C and C++. The power and the control offered by those languages made it the ultimate choice for systems programmers to adopt. But a set of passionate engineers at Mozilla research wanted to go against the status quo and invent a programming language that can replace the inevitable C. That’s where they built Rust. A programming language that is as fast as C but doesn’t give you runtime bugs which crashes your entire system with a segmentation fault. The Rust designers have designed that in a way so that it is safe and prevent as much runtime bugs as possible and identify them during the compile time. Rust is becoming a popular programming language outside the system programming circle because of the modern features of the language and the ecosystem they have built with “Cargo”.&lt;/p&gt;

&lt;h1&gt;
  
  
  Ballerina is for system builders
&lt;/h1&gt;

&lt;p&gt;So then, why do people need “Ballerina”? Both Go and Rust are excellent programming languages to build systems which does their job at hand with utmost efficiency. But sometimes those systems built with Go and Rust alone cannot fulfill the requirements of the end-user. You need to connect these various systems using an integration tool. Why use a graphical editor and build integrations of you are an efficient programmer who wants more control over what you do? That is where Ballerina comes into the rescue. Ballerina is specifically designed to build integrations with the knowledge of network, messaging formats, protocols, data structures into the language so that you don’t need to rely on third-party libraries when integrating software. Ballerina also comes with features that are available in Go, Rust as well as an ecosystem that allows programmers to build great software through collaboration.&lt;/p&gt;

&lt;p&gt;That’s it for the moment. I will see you with more content on these languages in the future.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>go</category>
    </item>
  </channel>
</rss>
