Choosing the right tool for the job!

Written by: Igor Korotach

Which types of IT projects do you know?

By type of work

  • Web Development
  • Software Development
  • Mobile App Development
  • Network Configuration
  • Software Implementation
  • Hardware Installation
  • Database Management
  • IT Emergency Recovery

By business domain

  • Banking, Finance Services and Insurance 
  • Manufacturing 
  • E-commerce
  • Online Services and marketing
  • Logistics and Supply Chain Management
  • Telecommunication
  • Pure IT industry

By client's attitude...

Hype train

Ol' reliable

"It's a certified IT technology, that..."

Should have been done yesterday

Gotta go fast!

Types of architecture

  • Monolith with layers (N-layered)
  • Service Oriented Architecture
  • Event Driven Architecture
  • Pipes and Filters
  • Cloud Native Architecture

Tech choice diagram

Performance, Reliability, Ease of Use

Performance criteria

  1. System metrics (CPU, RAM, GPU, etc.)
  2. Request metrics (Request per second, Average response time, etc.)
  3. Network metrics (Latency, bandwidth, etc.)
  4. Scalability metrics (scalability factor, scalability curve, etc.)

Reliability criteria

  1. Error metrics (Rate of errors, Criticality of errors, etc.)
  2. Availability metrics (Uptime, etc.)
  3. Security metrics (Security incidents, CVE, Issues, etc.)
  4. Licensing policy
  5. Production readiness (Readiness of the docs, Time to resolve issues, Customer/Community Support, Feature richness)
  6. Open sourceness & developer support
  7. Resource availability (amount of engineers who know that tech on the market/in the company)

Ease of Use criteria

  1. Documentation quality
  2. Getting started section
  3. Productivity guidelines
  4. Feature richness & explanation
  5. Boilerplate code amount
  6. Speed of development for the tool

Rules of choosing a technology

  1. Understand the surrounding restrictions & possibilities
  2. Find the option you like
  3. Find an alternative traditional solution
  4. Test the claims given on your options
  5. Find the pros of your choice
  6. Find the cons of your choice

Example: Redpanda

Claimed

Independently tested

Redpanda Performance

Kafka taken for comparison

https://jack-vanlightly.com/blog/2023/5/15/kafka-vs-redpanda-performance-do-the-claims-add-up

Redpanda

Kafka

Redpanda Reliability

Kafka taken for comparison

Redpanda

Kafka

Redpanda Ease of Use

Kafka taken for comparison

Pros

Cons

Redpanda Pros & Cons

  1. Performance - Low throughput is where Redpanda has its most robust end-to-end latency results, then as you increase throughput, the specifics of the workload can have a disproportionate impact on performance.
  2. Ease of use - Client libraries are compatible with Kafka, Getting started is easier
  1. Licensing - Business Source License
  2. Performance - Several common production configurations, such as high producer count or running for more than 24 hours can cause severe reductions in performance.
  3. Reliability - Limited adoption
  4. Reliability - features are limited (e..g. Stream Processing)

Personal tips on choosing the right tool

  • When looking at new piece of tech start with R&D
  • When starting a project a general purpose tool is better than a niche tailored one
  • Don't forget 'Make it work -> make it fast'
  • Good abstractions + bad tech >= bad abstractions + good tech
  • Don't get into 'it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail'
  • Sometimes you have to stop sharpening the saw, and just start cutting shit
  • Be skeptical but curious about new tools

Everything comes with a tradeoff

Thanks for your attention. You've been awesome!

Questions?

  • Presentation link: https://slides.com/emulebest/choosing-the-right-tool

Choosing the right tool

By Igor Korotach

Choosing the right tool

  • 122