Build a Spell Checker Web Client
Interact with a spell checker web service using a servlet class and JSP page. Learn how to create a web client that communicates with the service, pass information from JSP to the servlet, and generate client stubs for service operations.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Ingredients of a Scalable System Anshul Gupta
Philosophy Functional Requirement Non Functional Requirement
Functional Requirement What product Manager cares What end customer cares Example: A system which can allow people to manage/search property
Identify Logical Components Property Repository Upload Image Search across Property User Authentication, Session
Simplest Logical View User Auth Search Storage Property Repo UI Image Application
Non Functional View System(s) Identification Tech stack choice(s) Understand Scaling Requirement
System Tech View (Desktop App) Image UI User Auth Search Property Repo Storage Java Runtime
Limitations? Stateful System, Image hosted as files on Server Machine Search is heaveliy dependendent on MYSQL MYSQL potential bottle neck Not horizontally scalable Image UI User Auth Search Property Repo Storage Java Runtime
How to Scale Horizontally? Image Service S3 Bucket Image App CDN <html> <img src=CDN /> .. </html> Desktop App N G I N X Desktop App
Monolithic System Pros - One Runtime, easy to manage and deploy - Low latency calls to other modules (nothing going on network) - Ideal choice for small scale application with low scaling requirements.
Monolithic System Cons - Common runtime (thread, memory), a single bug can lead to complete application failure - Troubleshooting is difficult. Typically thread dumps, heap dumps to identify buggy API
Service Oriented Architecture Pros: - Every system is a logical citizen in overall architecture. - Incremental development of feature, new functionality onboard as citizen - No shared resources - Each service scale independently. - Instrumentation @service level. Foresee problems via metrics trends. - A/B testing of new service before migrating the complete traffic
Service Oriented Architecture Cons: - Multiple services to be managed, better instrumentation is a key here - Deployment has to be planned and backward compatible.
NFR system characteristics Horizontally scalable Highly Available or Highly Consistent Recoverable Serviceable
Benchmark Bottle necked on what? CPU RAM Disk Network
Availability from App side - Hystrix (https://github.com/Netflix/Hystrix)
How to Monitor Grafana - https://github.com/grafana/grafana
Functional Metrics Foxtrot https://github.com/Flipkart/foxtrot
Data builder framework https://github.com/flipkart-incubator/databuilderframework