javamultiplex / GIDS2023

GIDS 2023 Notes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Great International Developer Summit 2023

Schedule

25th - 28th April 2023, Bangalore

Speakers

Sessions Attended

25th April 2023

26th April 2023

  • Sufficiently Advanced Technology, Software, & Sorcery - Michael Carducci πŸ‘

  • Democratizing Access to GPUs for Faster ML/AI Innovation with Generative AI - Duncan Ng

  • Journey to 500M - An Engineer’s view - Rajeev Purohit

  • Future with Large Language Models - Prashanth Subrahmanyam

  • 15 Best Practices for Designing Enterprise RESTful APIs in the Cloud - Rohit Bhardwaj

    1. oData
    2. Schema.org
    3. JSON-LD
    4. URL Size - 3000 char
    5. Date/Time - ISO - 8601 Standard - https://www.w3.org/TR/NOTE-datetime
    6. Bounded Context
    7. Output validation is more important then input validation
    8. API Security
    9. Entity Tags (ETag)
    10. OWASP API Security
  • How to Approach Refactoring - Venkat Subramaniam πŸ‘

    1. You can't be agile if your code sucks.
    2. Code is how we tell out collegues how we feel about them.
    3. Coding is an act of Empthy (The ability to understand another person's thoughts and feelings in a situation from their point of view, rather than your own).
    4. Sometime you have to slow down in order to gain speed.
      • Simplicity
      • Clarity
      • Brevity (The state of being short or quick)
      • Humanity
    5. SLAP - Single level of abstraction principle (Convey the what and delegate the how)
    6. Code is like people on a crowded train
    7. Comment why and not what
    8. Don't comment bad code instead refactor it
    9. Commit frequently so you can reduce the cost of undo to near zero
    10. Avoid clever code - Keep it simple
    11. Make it small and cohesive
    12. Discuss before doing any refactoring
    13. Never do big bang refactoring
    14. Never refactor the code because you didn't like it (because you didn't write it πŸ˜„)
    15. Only refactor if test cases are avaiable (manual or automated) - Test cases do validation
  • Event-driven Autoscaling for Serverless Java - Daniel Oh

    1. KEDA (Kubernetes Event Driven Autoscalling)
    2. Quarkus
    3. Openshift
    4. kafka
    5. Knative
    6. Prometheus
  • Bootiful Spring Boot 3 - Josh Long πŸ‘

    1. Java 17
    2. Spring framework 6 & Jakarta EE 9
    3. Observibility
    4. GraalVM Native image support
    5. New HTTP Client using WebClient under the hood
    6. ProblemDetail usage
  • Transforming Data using the Functional API - Venkat Subramaniam πŸ‘

    1. sum()
    2. min()
    3. max()
    4. count()
    5. toMap()
    6. toList()
    7. toSet()
    8. Joining()
    9. Partionining()
    10. Grouping()
    11. Teeing()
  • Designing Applications with Functional Programming Constructs - Venkat Subramaniam πŸ‘

    1. Functional Style == Functional Composition (It is an approach where the result of one function is passed on to the next function, which is passed to another until the final function is executed for the final result. Function compositions can be composed of any number of functions)
    2. Functional Programming == Functional Composition + Lazy Evaluation.
    3. Polymorphism is to Object Oriented Programming as Lazy Evaluation is to Functional Programming.
    4. Functional Programming relies on Lazy Evaluation for efficiency.
    5. Elm uses 99.9% haskell syntaz plus a tinch of F# syntax compiles down to Javascript.

27th April 2023

  • How to Think Like an Architect - Mark Richards πŸ‘

    1. Read these books
      • Fundamental of Software Architecture
      • Software Archiecture - The Hard Part
    2. The first law of software archiecture - Everything in software architecture is a tradeoff
    3. Tecnical Depth vs Technical Breadth
      • Stuff you know - Technical Depth
      • Stuff you know you don't know (+ Stuff you know) - Technical Breadth
      • Stuff you don't know you don't know
    4. Daily invest atleast 20 mins on yourself to increase technical breadth
  • 25 Years of Software Development: Inside the Zoho Success Story - Hyther Nizam πŸ‘

    1. Don't do heavy lifting in user thread.
    2. Don't trust any input from user.
    3. No single point of failure at ant level.
  • Agile Architecture: Impactful Change for Complex Orgs - Rick Maharaj

  • Software Architecture: The Hard Parts - Neal Ford πŸ‘

    1. How to analyze Trade-offs?
      • Business Drivers (Time to market) -> Architecture Characteristics (Maintainability,Testability,Deployability) -> Trade off Analysis (Performance,Maintenance)
      • Watch out for "out of context" trap when analyzing trade-offs. - Shared lib vs Shared service
      • Model relevant business scenarios to extract trade-offs - One payment service vs Multiple services with each payment type
      • Compare like things - MECE lists (Mutually exclusive [no overlaps], Collectively exhuastive[cover entire space])
      • Avoid over evangelizing a particular solution or technology - Topic vs Queue
      • Don't overwhelem your business stakeholders with too many trade-off choices - Sync vs Async
      • Use qualitative analysis to iterate on design, leading to quantative analysis
    2. There is no silver bullet in software architecture
  • Patterns of Event-Driven Architecture - Mark Richards πŸ‘

    1. Event Driven vs Message Driven
    Event Driven Message Driven
    Broadcast message to everyone Broadcast message to only known
    Topic Queue
    Topic owner is sender Queue owner is reciever
    Topic owner own's request payload Queue owner own's request payload
    1. Event forwarding pattern
    2. Domain broker pattern
    3. Workflow state pattern
    4. Multibroker pattern
  • Six Essential Soft Skills for the Software Architect - Michael Carducci πŸ‘

    1. Value driven development
    2. Problem space thinking
    3. Communication - Think, Act and Communicate strategically
    4. Time management
      • Deep work is rare, valuable and meaningfull
      • Shallow work is easily replicable
      • Tools
        • RescueTime
        • Personal Kanban Board
    5. Empthy - Empthy means feeling with, Sympathy means feeling for
    6. Curosity
  • Code Review, you said? - Venkat Subramaniam πŸ‘

    1. First law of Programming
      • Lowering quality lengthens development time.
      • We can't be agile if code sucks.
    2. What is agile development
      • It is not about standup, scrum and velocity.
      • It is feedback driven development.
    3. Types of feedback
      • Active use of the product
      • From automated tests
      • Code reviews
        • Pair rotation
        • Technical and social
    4. Reviewer
      • Help others learn
      • Learn thing you didn't know
      • Get familiar with application data
    5. Team
      • Refactoring of code to reduce cost of changes
      • Collective ownership
      • Reduces truck factor
      • Reduces a single point of failure
    6. Never review code that has not
      • Been compiled
      • Passed test
      • Code quality
    7. Start with the tests
      • Are the tests easy to understand
      • Are they short
      • AAA - Arrange -> Act -> Assert
    8. Code reviews are effective when developers ask for it.
    9. Ask early and frequently if you want feedback.
    10. Ask in the end if you want blessings.
    11. Be continous, not episodic
    12. Review in stages not in features
    13. How to review?
      • Go beyond coding styles
      • Don't fix bug write test first
      • Be constructive
        • Don't say what is terrible
        • Instead syat what can be better, how and why
        • Make it safe to be honest
  • Mastering Cloud Scalability and System Designs Deep-dive - Rohit Bhardwaj

    1. p99 latency - It's 99th percentile. It means that 99% of the requests should be faster than given latency. In other words only 1% of the requests are expected to be slower.
    2. Productive System Context Diagram - Level 0 DFDs, also known as context diagrams, are the most basic data flow diagrams. They provide a broad view that is easily digestible but offers little detail. Level 0 data flow diagrams show a single process node and its connections to external entities.
    3. DB Engines
    4. Response time - 250 milliseconds
    5. Apache Spark - Apache Spark is an open-source, distributed processing system used for big data workloads. It utilizes in-memory caching, and optimized query execution for fast analytic queries against data of any size.

28th April 2023

  • Meta-modern Software Architecture - Neal Ford πŸ‘
    1. Prefer duplication over coupling
    2. Data Mesh - A data mesh is a decentralized data architecture that organizes data by a specific business domainβ€”for example, marketing, sales, customer service, and moreβ€”providing more ownership to the producers of a given dataset
    3. Service Mesh - In software architecture, a service mesh is a dedicated infrastructure layer for facilitating service-to-service communications between services or microservices using a proxy
  • Is your Code Net-zero? - Gunasundari Sridhar
  • Upgrade to Modern Java - Kenneth Kousen πŸ‘
    1. Java is Agile because of 6 month release cycle after Java 10.
    2. JDK 20 released in March 2023 and JDK 17 is LTS.
    3. Function Interface
      • Consumer - Take input and return nothing
      • Supplier - Take no input and return output
      • Function - Take input and return output
      • Predicate - Take input and return boolean
    4. Stream API
    5. Lambda Function
    6. CompletableFuture
    7. Type Inference
    8. var keyword
    9. Http Client
    10. Text Blocks
    11. Record
    12. Sealed classes/interfaces
    13. Switch expressions
    14. Pattern matching for switch expressions
    15. JPMS(Java Platform Module System) is good for only public libraries
  • Testing Software Architecture - Mark Richards πŸ‘
    1. Operational Characteristics
      • Performance
      • responsiveness
      • availability
      • scalability
      • elasiticity
      • data intigrity
      • fault tolerance
      • data consistency
      • recoverability
      • security
      • concurrency
      • reliability
    2. Structural Integrity - The law of demeter (principle of least knowledge)
      • ArchUnit - Unit test java architecture
    3. Fitness functions - An architectural fitness function provides an objective integrity assesement of some architectureal characteristic(s).
      • Triggered - Pre Production
      • Continious - Post Production
  • Granularity & Communication for Microservice Architectures - Neal Ford πŸ‘
    1. Service granularity disintegrators - When should I consider breaking apart a service
      • service functionality
      • code volatality
      • throughput and scalability
      • fault tolerance
      • access restriction
    2. Service granularity integrators - When should I consider putting services back together
      • database transactions
      • data dependencies
      • workflow & coreography
    3. Difference between Synchronous and Asynchronous communication
    4. Difference between Orchetration and Choreography workflows
    5. Distributed transactions are very difficult to implement, if possible we should try to avoid it
    6. Transactional Sagas - Total 8 sagas possible based on below combinations
      • Communication - Sync/Async
      • Consistency - Atomic/Eventual
      • Coordination - Orchestration/Choreography
  • Spring Apps at Scale - from 0 to 5B to 100B+ Requests - Josh Long, Asir Selvasingh πŸ‘
    1. Azure Spring Apps - Build and deploy Spring Boot applications with a fully managed service from Microsoft and VMware.
    2. Spring Cache
    3. Reactive Spring
    4. Spring Native - GraalVM
  • Decomposition Patterns - Mark Richards πŸ‘
    1. Identify and size logical components - The larger the component the more coupled it is from rest of the system
    2. Flatten components - Root namespaces(packages) should not have any code in it
    3. Analyze component dependencies - There are tools available
    4. Create domain component
    5. Create domain service
    6. Microservices system -
      • It is not mandatory to break each domain service to microservices
      • Each microservice should have seperate database

About

GIDS 2023 Notes