On this page I will show the skills I acquired both with professional experience and studying on my own even when not applicable in companies. My professional experiences are on another page, accessible by the link in the menu or by clicking the button below:
- AWS - Amazon Web Services
- Right now I have an opportunity to implement my first solution using public cloud at Itaú Unibanco. With the help of a solutions architect, we set up the solution design using AWS services and we are currently working to create the infrastructure through CloudFormation. The solution will have two components, one using ECS, SQS and RDS and the other S3 and CloudFront. I am taking advantage of this moment to use all the knowledge acquired with the Cloud Practitioner and Solutions Architect - Associate certifications while studying for the Developer - Associate certification.
On the outside I made this personal website that is hosted on AWS.
This is a set of simple HTML 5 pages, the source code of which is in a personal GitLab account with a trigger configured to mirror the code in AWS CloudCommit.
I also created a treadmill via AWS CodePipeline to deliver the code on S3. In S3 I configured 3 buckets: 2 enabled with static website hosting, one of which represents the website's domain with static files and the other only redirects calls to the www subdomain for the domain and the last bucket for storing the call logs of the pages .
I used AWS CloudFront to distribute S3 content to Edge Locations around the world, taking the opportunity to include the domain's certificate of authenticity that was also provided by the AWS Certificate Manager.
This domain that I bought within the AWS environment with one of the Registrar partners and also made use of Route53 to configure the website's DNS to use the domain and sub-domain to point to the distribution on CloudFront.
- Microsoft Azure
- It was the first public cloud service I had contact with. I took advantage of the fact that Itaú Unibanco has a partnership with Microsoft that included in the licenses of each developer a monthly credit for Azure services. Today I use Azure more to have a more robust development environment for me to use when I need it instead of investing a lot in a notebook. But it is on my radar to start expanding the knowledge of Azure services aiming at "multi-cloud" terms in the bank. For this reason I ran after the Azure Fundamentals certification, very similar to the AWS Cloud Practitioner more to have the concepts of the services offered by the cloud provider.
- Itaú Private Cloud
- Itaú Unibanco started the journey to use the cloud, preferring to create an entire IaaS and PaaS structure in the bank's OnPremisses environment. It was believed that it was necessary for engineers to have knowledge of what cloud computing is, what DevOps is (in the case of DevSecOps) and other concepts before starting to use public cloud. Because of this I ended up acquiring a lot of knowledge of CI and CD mat since we had to have minimal knowledge to solve problems in the private cloud mat. So I ended up gaining experience in the use of IaaS and PaaS in the private cloud environment, which also helped me in using the public cloud since it is conceptually the same thing.
- Jira and Confluence
- One of the skills I acquired at the bank with the support of collaboration tools like Jira and Confluence, was that of collaborating not only with the team but with the company as a whole. The tools help a lot, but the concepts of collaboration through agile methodologies favored the current structure in squads for the development of projects. With Confluence we were able to share knowledge by extrapolating the documentation. And with Jira, in addition to following the Scrum ceremonies, we use it as a tool included on the CD mat to deliver the software in production.
- Scrum, Kanban a d DevOps
- The three certifications I took from CertiProf helped me to have more solid concepts of agile methodology through frameworks, processes and tools. It is not enough to experience day-to-day work that helps, but having solid concepts helps to guide and guide the way we manage to deliver and help the team. Ceremonies are not a freshness or a mere "you have to go through this every day", it is a culture that helps us organize and collaborate to achieve goals. I believe that these concepts and the tools that support us to worship these concepts bring better results than at the time of cascade projects.
- Cloud computing
- I believe that to be able to develop solutions for use in the cloud, it is necessary to have a good basis on what cloud computing is. I've been studying a lot about AWS and Azure recently, but both have a single problem: they are vendors and will show you the services they have to sell you a facility that you didn't know you could have. This is not enough for you to provide distributed architecture solutions using the cloud, it is necessary to have solid concepts of what a cloud-oriented architecture is. It is for this reason that I have been studying books with the concepts (vendor neutral) of cloud computing, books like "Cloud Computing: Concepts, Technology & Architecture" by Thomas Erl to have solid concepts that are applicable to any cloud provider in the market.
- There are many discussions of how big a solution can be to be considered a microservice, following all the basic precepts that a microservice has to have: to do a single thing well done. I've heard everything about microservices within the corporate world, until on the mainframe you can build microservices (with all due respect to Cobol professionals). So I believe that it is also necessary to have solid concepts of what a microservice is and all the paraphernalia that comes together to enable a microservice to exist, which has a single responsibility, a single domain and is reusable. I'm reading books like "Service-Oriented Architecture: Analysis and Design for Services and Microservices" by Thomas Erl (look at it again) and "Building Microservices" by Sam Newman. An honorable mention is worth to another book that does not have much to do with microservices, but which is also a basis for us to be able to think about reusing not only the application, but the classes and methods that the application will use, I am talking about "Design Patterns: Elements of Reusable Object-Oriented Software "from the famous" Gang of Four ".
- Of course, just as important as building a solution architecture for applications on the distributed platform, is knowing how to make use of data on the distributed platform with the tools we have. Server, Oracle, MySQL) and non-relational databases (Cassandra, DynamoDb) and extrapolating a little bit what is an API contract and what are events, because we traffic data in various ways for me is essential. I can safely say that I have solid knowledge in relational databases not only for my certification in SQL Server, but for more than 10 years of experience working with SQL Server and data modeling. In the last 3 years I acquired a lot of knowledge for using non-relational databases with eventual consistency (which until recently it was a "scandal" to have this in a bank) and correct use of API contracts (RAML) and events (with Kafka in my case). Even today I end up seeing some projects in which the drawings were "crooked" by the team not knowing the differences between relational and non-relational banks or when they say they are creating events as if it were a message (MQ line), for this reason I believe it is necessary to have a minimal basis.
Software development tools
- Visual Studio
- I have been working with the Visual Studio "family" for over 15 years, starting with Visual Basic 6 where I have at least 7 years of experience since the time when we didn't use the internet to search, we used Visual Basic 6 Black Book. Time passed and I was using it from Visual Studio .NET (framework 1.1) for development on the already "deceased" HP pda that came with Windows CE to the most current Visual Studio 2019 to make .Net Core applications, both using C # and VB.NET. I have nothing to complain about, both VB6 and VB.NET and C # were already the most used "languages" in the market for software development and this made me study a lot about object orientation and see the changes that this new way of programming would impact. I've done everything: desktop applications, "mobile" applications (for pda's), applications that iterate with instruments (digital calipers, etc.), web applications (front end), robots and services (back end), etc.
- I also went through a few good ones with Java, starting with the almost unused NetBeans that I used both in college and in old projects at Itaú Unibanco itself. I deployed to the iPlanet web server with Java version 1.4 if I'm not mistaken and then on another team with other projects, I used the Rational Application Developer from IBM (which was a customized Eclipse) to deploy to WebSphere in Java 1.5 and 1.6 applications. Now that it is wonderful to work with Java, the market has changed a lot and the professionals have been updating themselves. Today I still prefer to use Eclipse (instead of IntelliJ which many prefer), but I already use at least one Java 1.8 deploying on Linux servers using Spring Framework to speed up development. So, about 3 years ago I learned a lot about Java: Spring Framework, Config Server, Spring Admin, use of Gradle and Maven's dependency repository, and it was with Java that I started my first applications in the private cloud in projects that used IaaS ( using the Netflix stack) and PaaS (using the OpenShift platform).
- SQL Server
- One of my main specializations is Microsoft SQL Server. Funny that at the beginning of my career I did not like to program using any iteration with any database. It was from the experience of Easyway do Brasil that I started having a taste for the subject to develop performance queries. But it was only at Itaú Unibanco due to project needs, that I became ashamed and studied on my own through a book that was the official guide for certification in SQL Server that I sought my first certification. Today I have more than 10 years of experience in SQL Server for development and performance analysis of queries, and I realize that this specialization is not common since most want to be DBA and end up being very far from the "footprint" of development. I have already solved several problems in the last few years related to concepts and good practices in assembling queries to improve performance and spend less. It is not just doing a Select as many say out there, so for these and other reasons today I consider myself a professional specialized in SQL Server with a focus on software development.