DZone.com Feed

DZone.com Feed


The Big Rewrite

Posted: 18 Sep 2020 01:27 AM PDT

"The Big Rewrite" is a scary phrase for most software developers and software companies. Most developers probably spent years getting to the point where they are today, and they often overestimate the value of their existing code base. However, software development doesn't obey by the normal laws of nature. For instance, every time you re-engineer your software from scratch, you're destined to implement it 10x better, 10x faster, and 10x more stable - At least up to some "n number of rewrites". Hence, my proposition, is to create the same software 5 times, before you're happy with your end result, and willing to label it as "production ready". In fact, if you haven't created the same software at least 5 times, I'd argue it's probably garbage anyways.

According to modern studies of Leonardo DaVinci's Mona Lisa, this was the process Leonardo used when he painted Mona Lisa. He slowly over time added new layers of paint, on top of the old layers, until he finally died - At which point Mona Lisa was forever cast in stone, and ended up as it looks like today. Leonardo never finished Mona Lisa, he simply died of old age, before he could ever add the "final stroke of paint" on top of its old layers.

Connect to Dynamics 365 Sales Data as a Linked Server

Posted: 17 Sep 2020 07:19 PM PDT

You can use the SQL Gateway to configure a TDS (SQL Server) remoting service and set up a linked server for Dynamics 365 Sales data. After you have started the service, you can use the UI in SQL Server Management Studio or call stored procedures to create the linked server. You can then work with Dynamics 365 Sales data just as you would a linked SQL Server instance.

Connect to Dynamics 365 Sales as an ODBC Data Source

If you have not already, first specify connection properties in an ODBC DSN (data source name). This is the last step of the driver installation. You can use the Microsoft ODBC Data Source Administrator to create and configure ODBC DSNs.

Build Fault Tolerant Applications With Cassandra API for Azure Cosmos DB

Posted: 17 Sep 2020 07:09 PM PDT

Azure Cosmos DB is a resource governed system that allows you to execute a certain number of operations per second based on the provisioned throughput you have configured. If clients exceed that limit and consume more request units than what was provisioned, it leads to rate limiting of subsequent requests and exceptions being thrown — they are also referred to as 429 errors.

With the help of a practical example, I'll demonstrate how to incorporate fault-tolerance in your Go applications by handling and retrying operations affected by these rate limiting errors. To help you follow along, the sample application code for this blog is available on GitHub — it uses the gocql driver for Apache Cassandra.

Getting Predictions After Each Batch in Keras and TF2.2

Posted: 17 Sep 2020 06:50 PM PDT

In this tutorial, I will demonstrate how I have managed to get the predictions after each training batch in Keras model. 

Using Tensorflow training code it is pretty easy, since we implement the training loop, in which we call:

Authentication Using Server Side X.509 Certificates With N1QL

Posted: 17 Sep 2020 06:42 PM PDT

Authentication and authorization to the query service in Couchbase works in multiple ways - 

  1. Passing credentials through a rest request - curl http://localhost:8093/query/service?pretty=true -d "statement=select * from system:keyspaces" -u Admin:pwd
  2. Passing credentials using the creds named parameter and/or query parameter - curl http://localhost:8093/query/service?pretty=true -d "statement=select * from system:keyspaces&creds=[{user:"Administrator","password":"pass"}]"
  3. Using basic auth in the request 
  4. Request from cbq (similar to 1,2) using the -u -p -creds options and \SET command. 
  5. X.509 Certificates for TLS
  6. Node to Node encryption

With the addition of RBAC, the creds query parameter was made redundant but is still supported for backward compatibility.

How I Improved My Legacy C++ Project With PVS-Studio

Posted: 17 Sep 2020 06:14 PM PDT

Since a few months, I've been refactoring my old C++/OpenGL project. Thus far, I used compilers (MSVC and Clang), my knowledge or free tools. At some point, I also got a chance to leverage a solid static analysis tool - PVS-Studio. The tool helped me with identifying 8 critical issues not to mention good code style and performance enhancements (in total 137 warnings)

Read on to see my report.

What Is SaaS Business Model?

Posted: 17 Sep 2020 03:20 PM PDT

Software As A Service (SaaS) is commonly known as cloud-based software. Today, Software as a Service is widely used by individuals and organizations across the world. 

According to Gartner, Inc., SaaS solutions were estimated to raise $85 billion in 2019. In 2020, they are estimated to generate $105 billion - $20 billion more than the last year. 

Single-Tenant vs Multi-Tenant: SaaS Architecture

Posted: 17 Sep 2020 03:16 PM PDT

Today we'll break down the differences between single and multi-tenant architectures. The main difference between them is that these software applications can serve either one or more customers at the same time. A single tenancy architecture is mostly used throughout the SaaS (software-as-a-service) cloud services or delivery models. On the other hand, a multi-tenancy, though it is also an architecture of a single software application, serves multiple customers at a time.

By knowing the differences, people will understand how each architecture works and which model is the best solution for their needs, also I record a video were I explained 3 ways to architect your SaaS application. It's essential to learn more about single-tenant vs multi-tenant so people understand the importance these two architectures have.

How to Implement Oauth2 Security in Microservices

Posted: 17 Sep 2020 02:06 PM PDT

Purpose

I wanted a solution where we can easily captured Oauth2 and Oauth2 client for the secure communication with all of the microservices. Focusing, how to achieve oauth2 full flavor into microservices architecture. User can't access API without token. The token will be available when user given basic and authentication details to generate token for access API.

All requests will consider one entry point API-Gateway but, service-to-service can communicate. The API-Gateway will dynamic routing using Zuul Netflix OSS component. Every request will check authorization when request will arrived into service and service will request authorization server to verify is either authenticate or not. The entire Meta configuration settled into the central configuration on github (You can manage on any repository).

DZone Partners Agile + DevOps Virtual This November

Posted: 17 Sep 2020 12:34 PM PDT

DZone always strives to be a trusted resource for developers, engineers, and architects to turn to stay on top of trends. Now, we will bring some of our top articles and contributors straight to you, streaming live during the Agile + DevOps Virtual conference.  We have partnered exclusively with TechWell who produces one of the top Agile + DevOps conferences in the industry to bring you the Best of DZone track. So why not make the most of what's left of 2020 and focus on your career and skill growth? No matter your level of agile or DevOps adoption, there will be content that meets your experience and organizational needs. 

Take advantage of promo code DZONE10 exclusively for Dzone readers when you register to get 10% off your pass, when you join DZone and Agile + DevOps Virtual this fall!

Value Stream Management Essentials

Posted: 17 Sep 2020 12:27 PM PDT

Value Stream Management (VSM) is the lean practice of monitoring, evaluating, and continually improving an organization's software delivery process. In this Refcard, explore everything VSM has to offer, including key concepts, fundamentals, and more.

Spring Boot + Jersey: Role-Based Security With JAX-RS Annotations

Posted: 17 Sep 2020 11:55 AM PDT

Need a better, easier way to manage authorization within your application? Check out this tutorial on role-based security with JAX-RS annotations. Let's get started!

MariaDB SQL Set Operators

Posted: 17 Sep 2020 11:54 AM PDT

Set operators are the SQL operators that deal with combining, in different ways, different result sets. Say you have two different SELECTs that you want to combine into a single result set, the set operators come into play. MariaDB has been supporting the UNION and UNION ALLset operators for a long time, and these are by far the most common set operators.

But we are getting ahead of ourselves here, let me first explain the set operators that we have and how they work. If you want to give this a try, you can use your existing deployment of MariaDB Server, or try this out in a MariaDB SkySQL cloud database.

UNION and UNION ALL

The UNION and UNION ALL set operators add the result of two or more result sets. Let's start with UNION ALL and UNION will then be a variation of UNION ALL.

GraalVM — Byte Code to Bit Code

Posted: 17 Sep 2020 11:51 AM PDT

Early adopters for Cloud-Native (microservices, serverless) are now moving to its next wave called v2.x., leveraging the maturity, learnings, and identified shortfalls to design next-level stuff.

Let's recap few purposes of going cloud-native that we will relate here:

Bringing Your (Encryption) Keys to Multi/Hybrid Clouds

Posted: 17 Sep 2020 11:38 AM PDT

Tools and Setup

Before we dive into the fun part of getting keys shared amongst cloud providers, there are a variety of tools required to get this tutorial working. First, you'll need to download and install Vault, then get it up and running. You will also need to install cURL and OpenSSL — these usually comes pre-installed with most Linux OSs, and are available via most package managers (apt, yum, brew, choco/scoop, etc.). Our examples also use head and diff which are part of the coreutils and diffutils packages under Ubuntu; you can either find a similar package for your OS or find a manual workaround for those portions. Next, install the AWS command line tools (CLI) and make sure you configure the CLI to connect to your account. The last step is to install and configure the Heroku CLI.

One last note — the Heroku feature to utilize keys from AWS requires a private or shield database plan, so please ensure your account has been configured accordingly.

Spring Boot - Building Restful Web Services With Jersey (XML) + JPA

Posted: 17 Sep 2020 11:31 AM PDT

In the video below, we take a closer look at how we can build production-ready services with Jersey, JPA, and Spring. Let's get started!

How to Build a Kubernetes Operator

Posted: 17 Sep 2020 11:28 AM PDT

This is the second part of our series focusing on Kubernetes Operators, and it shows how you can build a Kubernetes Operator based on the Bitnami Apache Helm chart. Note that you can refer to the steps in this tutorial to build an operator for your own applications.

Prerequisites

  1. We assume you followed the first part of the series. Thus, you should have a Kubernetes cluster (v1.7 or newer) with a control plane and two workers running on your computer. Also, the Operator Lifecycle Manager should be installed on your system. You can enter the following command to verify that everything is set up:
Shell


Overcoming Common Serverless Challenges with Mainframe CICS Programs

Posted: 17 Sep 2020 11:21 AM PDT

By this point most enterprises, including those running on legacy infrastructures, are familiar with the benefits of serverless computing:

  • Greater scalability
  • Faster development
  • More efficient deployment
  • Lower cost

The benefits of agility and cost reduction are especially relevant in the current macroeconomic environment when customer behavior is changing, end-user needs are difficult to predict, and development teams are under pressure to do more with less. 

Spring Boot REST API Request Body Validation With Custom Validator

Posted: 17 Sep 2020 11:17 AM PDT

In the video below, we take a closer look at Spring Boot REST API Request Body Validation Example using Custom Validator. Let's get started!

C Programming Interview Questions

Posted: 17 Sep 2020 11:15 AM PDT

Most interview questions are based on algorithms and live coding. Companies know that learning a programming language or switching from one language to another should not be a problem for the candidate. But sometimes, for specific jobs, companies look for the candidate who specializes in a particular language. Here are some of the most frequently asked questions I have compiled that are asked during the interview for C developers.

C is a procedural programming language, used for writing effective programs. C is widely used language for the following reasons:

Kubernetes Cloud Autoscalar in Terraform - Part 1

Posted: 17 Sep 2020 11:13 AM PDT

Cluster Autoscaler - It is a component that automatically adjusts the size of a Kubernetes Cluster so that all pods have a place to run and there are no unneeded nodes. It can be created by using the YAML file, Helm Chart, or Terraform. The following example creates the Cloud Autoscalar deployment using Terraform dynamic Modules.

Corresponding to https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
Resource kubernetes_deployment:-
Plain Text
 




xxxxxxxxxx
1
75


 
1
cluster-autoscaler.tf:-
2
resource "kubernetes_deployment" "cluster-autoscaler" {
3
  metadata {
4
    name      = var.cluster-autoscaler-data["cluster-autoscaler-name"]
5
    namespace = var.cluster-autoscaler-data["namespace"]
6
    labels = {
7
      "app" = var.cluster-autoscaler-data["cluster-autoscaler-label"]
8
    }
9
  }
10
  
11
  spec {
12
    replicas = 1
13
    selector {
14
      match_labels = {
15
        "app" = var.cluster-autoscaler-data["cluster-autoscaler-label"]
16
      }
17
    }
18
  
19
    template {
20
      metadata {
21
        labels = {
22
          "app" = var.cluster-autoscaler-data["cluster-autoscaler-label"]
23
        }
24
        annotations = {
25
          "prometheus.io/port"   = "8085"
26
          "prometheus.io/scrape" = "true"
27
        }
28
      }
29
  
30
      spec {
31
        automount_service_account_token  = true
32
        termination_grace_period_seconds = 300
33
        service_account_name             = var.service-account-name
34
  
35
        container {
36
          image = var.cluster-autoscaler-data["image_name"]
37
          name  = "cluster-autoscaler"
38
          command = ["./cluster-autoscaler",
39
            "--v=4",
40
            " --stderrthreshold=info",
41
            "--cloud-provider=aws",
42
            "--skip-nodes-with-local-storage=false",
43
            "--expander=least-waste",
44
            "--node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/${var.eks_cluster_name}"
45
          ]
46
          resources {
47
            limits {
48
              cpu    = "100m"
49
              memory = "300Mi"
50
            }
51
            requests {
52
              cpu    = "100m"
53
              memory = "300Mi"
54
            }
55
          }
56
          volume_mount {
57
            name       = "ssl-certs"
58
            mount_path = "/etc/ssl/certs/ca-certificates.crt"
59
            read_only  = "true"
60
          }
61
        }
62
        volume {
63
          name = "ssl-certs"
64
          host_path {
65
            path = "/etc/ssl/certs/ca-bundle.crt"
66
          }
67
        }
68
      }
69
    }
70
  }
71
}
72
variable.tf :-
73
variable "cluster-autoscaler-data" {}
74
variable "service-account-name" {}
75
variable "eks_cluster_name" {}


Service Account Module:-

How Custom Software Fills the Gap in Hybrid Workforces

Posted: 17 Sep 2020 11:08 AM PDT

The COVID-19 pandemic has forced workforces to split into two unequal halves: those who can afford to work remotely, and those who can't. While some consider a hybrid workforce as an opportunity--and it is--there's no denying that it's also causing strain to both businesses and their employees. Unless a solution is put in place to help companies adjust to this new situation, the impact will continue to grow.

One solution is for companies to invest in custom software that directly addresses the issues associated with a sudden transition to a hybrid workforce. But first, let's examine what those issues are.

Developing Software for Connected Cars – Common Challenges and How to Tackle Them

Posted: 17 Sep 2020 11:00 AM PDT

Automotive is transforming into a hyper-connected, software-driven industry that goes far beyond the driving experience. How do you build applications in such an innovative environment? What are the main challenges of providing software for connected cars and how to deal with them? Let's dive into the process of utilizing the capabilities of the cloud to move automotive forward.

People have always aimed for the clouds. From Icarus in Greek mythology, first airplanes and spaceships to dreams about flying cars – our culture and history of technology development express a strong desire to go beyond our limits. Although the vision from Back to the Future and other Sci-Fi movies didn't come true and our cars cannot be used as flying vehicles, our cars actually are in the cloud.

Maven Plugin Testing In a Modern Way Part IV

Posted: 17 Sep 2020 10:57 AM PDT

In the previous part of the series - Maven Plugin Testing - In a Modern way - Part III we have seen how to define command line options. In this part, we will take a deeper look at which goals will run for each test case and how we can change that.

Let us start with simple example test case like the following:

Spring Boot REST API: PathVariable Validation Example

Posted: 17 Sep 2020 10:52 AM PDT

In the video below, we take a closer look at how we can perform PathVariable validation in a Spring Boot REST API. Let's get started!

Why You Should Never, Ever print() in a Lambda Function

Posted: 17 Sep 2020 10:46 AM PDT

A Tale of Two Lambda Users

Tale #1: The Amateur

One moment everything is fine, then … Bam! Your Lambda function raises an exception, you get alerted and everything changes instantly.

Critical systems could be impacted, so it's important that you understand the root cause quickly.

Building a Data Catalog For Small and Medium-Sized Businesses

Posted: 17 Sep 2020 10:43 AM PDT

So you're ready to build your data catalog - where do you begin?

Data Catalog

Whether you're at a small to medium-sized business (SMB) with only a half a dozen developers to support everything from your new product features to your CICD pipeline or you're at a mid-market company with 600 employees that's looking to enter a new market, chances are that you simply don't have a lot of time. What you probably do have, however, are teammates constantly asking you what does the data mean, where does it come from, when will it be loaded and at some point, you'll probably be asking yourself "what was the data flow in that pipeline I wrote last year"

Kick-off Your Transformation With a Pre-Mortem

Posted: 17 Sep 2020 10:36 AM PDT

Large scale change initiatives (Lean, Agile, etc.) have a worryingly high failure rate. A chief reason for which is that serious risks are not identified early. One way to create the safety needed for everyone to speak openly about the risks they see is by running a pre-mortem workshop. Pre-mortems leverage a psychological technique called 'prospective hindsight' – imagining that the transformation had already failed, and walking backward from there to investigate what led to the failure.

When asked by the editor of the online science and technology magazine Edge.org to share one brilliant but overlooked concept or idea that he believes everyone should know, the Nobel laureate Richard H. Thaler, father of behavioral economics, former president of the American Economic Association, and an intellectual giant of our time did not hesitate. "The Pre-mortem!"[1], he said.

Finding and Fixing Django N+1 Problems

Posted: 17 Sep 2020 10:26 AM PDT

The Django Python framework allows people to build websites extremely fast. One of its best features is the Object-relational mapper (ORM), which allows you to make queries to the database without having to write any SQL. Django will allow you to write your queries in Python and then it will try to turn those statements into efficient SQL. Most of the time the ORM creates the SQL flawlessly, but sometimes the results are less than ideal.

One common database problem is that ORMs can cause N+1 queries. These queries include a single, initial query (the +1), and each row in the results from that query spawns another query (the N). These often happen when you have a parent-child relationship. You select all of the parent objects you want and then when looping through them, another query is generated for each child. This problem can be hard to detect at first, as your website could be performing fine. But as the number of parent objects grows, the number of queries increases as well — to the point of overwhelming your database and taking down your application.

How to Exploit a Microservice Architecture

Posted: 17 Sep 2020 10:23 AM PDT

With an emerging pattern of organizations embracing the DevOps framework, adopting Microservice Architecture is steadily gaining the respect it deserves. 

While DevOps eliminate organizational silos by enabling efficient collaboration, streamlining workflow integration, and automating application delivery. Microservice Architecture acts as an essential enabler to achieve a DevOps model by distributing an application into multiple deployable services. Microservices work as autonomous applications, decoupled from each other, and can be built, scaled, and deployed independently. This lets teams comprehend the application architecture easily and speed up delivery pipelines.

Comments

Popular posts from this blog

DZone.com Feed