「PlayFramework関西ビギナーズ in OsakanSpace 第1回」
http://atnd.org/events/33666
Play frameworkの概要と今後についてゆるく説明して、
Playとそのコミュニティを雰囲気を知っていただこうという趣旨で発表しました。
参加された方の半数がPHPユーザだったので、冒頭でPHPユーザの方向けの説明を特別に入れたりして工夫しています。
Cluster Fudge: Recipes for WordPress in the Cloud (WordCamp Austin 2014 Speaker)Grant Norwood
Your self-hosted WordPress site is quickly growing in popularity and page views. Or maybe you want to get away from that costly enterprise CMS currently on your plate and adopt a delectable, open-source platform. There are many reasons you might need the performance and redundancy of a clustered server solution, and I’ll show you how to mix up the ingredients needed to throw together a successful cloud-hosted WordPress environment that’s right for you.
We’ll talk about common multi-server configurations, from cheap and quick for the cost-conscious business, to robust and complex for the high level of control an enterprise demands.
At Tech4Africa 2012, I was asked to talk about the ins and outs of tuning the LAMP Stack for ultimate performance. But I think LAMP's days are numbered, so I segwayed to talking about Nginx, NoSql databases, and Javascript halfway through.
「PlayFramework関西ビギナーズ in OsakanSpace 第1回」
http://atnd.org/events/33666
Play frameworkの概要と今後についてゆるく説明して、
Playとそのコミュニティを雰囲気を知っていただこうという趣旨で発表しました。
参加された方の半数がPHPユーザだったので、冒頭でPHPユーザの方向けの説明を特別に入れたりして工夫しています。
Cluster Fudge: Recipes for WordPress in the Cloud (WordCamp Austin 2014 Speaker)Grant Norwood
Your self-hosted WordPress site is quickly growing in popularity and page views. Or maybe you want to get away from that costly enterprise CMS currently on your plate and adopt a delectable, open-source platform. There are many reasons you might need the performance and redundancy of a clustered server solution, and I’ll show you how to mix up the ingredients needed to throw together a successful cloud-hosted WordPress environment that’s right for you.
We’ll talk about common multi-server configurations, from cheap and quick for the cost-conscious business, to robust and complex for the high level of control an enterprise demands.
At Tech4Africa 2012, I was asked to talk about the ins and outs of tuning the LAMP Stack for ultimate performance. But I think LAMP's days are numbered, so I segwayed to talking about Nginx, NoSql databases, and Javascript halfway through.
This is my presentation about CFWheels at CFObjective ANZ, November 2010, Melbourne, Australia.
ColdFusion on Wheels (CFWheels), is an elegant framework inspired by Ruby on Rails.
Big Data! Great! Now What? #SymfonyCon 2014Ricard Clau
Big Data is one of the new buzzwords in the industry. Everyone is using NoSQL databases. MySQL is not cool anymore. But... do we really have big data? Where should we store it? Are the traditional RDBMS databases dead? Is NoSQL the solution to our problems? And most importantly, how can PHP and Symfony2 help with it?
4Developers 2015: Scaling LAMP doesn't have to suck - Sebastian GrodzickiPROIDEA
Sebastian Grodzicki
Language: Polish
Tradycyjny LAMP sprawdza się świetnie … w środowisku deweloperskim. Nawet jeżeli nie tworzysz kolejnego Facebooka, to każda niedostępność Twojego serwisu kosztuje Cię sporo nerwów oraz pieniędzy. Awaria wystąpi wcześniej lub później. Pytanie nie brzmi "czy" leczy "kiedy". Dlatego warto o tym pomyśleć zawczasu i zbudować taką architekturę, która nie jest podatna na niedostępność z powodu awarii jednego z jej elementów. Jakie narzędzia wybrać? Jak wycisnąć z nich ostatnie soki?
Automating Your Daily Tasks with Scripting - RubyConf 2015 TaiwanAdler Hsieh
This talk aims to go through basic scripting skills in Ruby. Participants will have a better understanding in managing their daily tasks with scripting. For example, we can setup automated scripts to delete old files on a daily basis instead of doing it manually. These can be done with Bash, Perl and many other scripting languages, but among of which Ruby is better known for its readability. It is easier to write, maintain, and reuse. It saves some time on system management and allows us to put more focus on the projects.
A Gentle Introduction to Functions-as-a-ServiceValeri Karpov
Slides from my talk on functions-as-a-service at Wyncode Academy in Miami in April '18. Provides an overview of the tradeoffs between different FaaS providers
Presentation at the Plone Conference Brazil 2013.
How to create a Plone deployment that performs like crazy and survives not only a datacenter failure, but even keeps on running when all Plone heads are down.
Redis : Database, cache, pub/sub and more at Jelly button gamesRedis Labs
Nir Shney-Dor of Jelly button games talks about how he uses Redis across many different use cases - as a persistent db, cache, for pub/sub, leaderboards etc etc..Fun walkthrough of all the uses one can put Redis to.
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
In this talk, I will talk about why log files are horrible, logging log lines, and more structured performance metrics from large scale production applications as well as building reliable, scaleable and flexible large scale software systems in multiple languages.
Why (almost) all log formats are horrible will be explained, and why JSON is a good solution for logging will be discussed, along with a number of message queuing, middleware and network transport technologies, including STOMP, AMQP and ZeroMQ.
The Message::Passing framework will be introduced, along with the logstash.net project which the perl code is interoperable with. These are pluggable frameworks in ruby/java/jruby and perl with pre-written sets of inputs, filters and outputs for many many different systems, message formats and transports.
They were initially designed to be aggregators and filters of data for logging. However they are flexible enough to be used as part of your messaging middleware, or even as a replacement for centralised message queuing systems.
You can have your cake and eat it too - an architecture which is flexible, extensible, scaleable and distributed. Build discrete, loosely coupled components which just pass messages to each other easily.
Integrate and interoperate with your existing code and code bases easily, consume from or publish to any existing message queue, logging or performance metrics system you have installed.
Simple examples using common input and output classes will be demonstrated using the framework, as will easily adding your own custom filters. A number of common messaging middleware patterns will be shown to be trivial to implement.
Some higher level use-cases will also be explored, demonstrating log indexing in ElasticSearch and how to build a responsive platform API using webhooks.
Interoperability is also an important goal for messaging middleware. The logstash.net project will be highlighted and we'll discuss crossing the single language barrier, allowing us to have full integration between java, ruby and perl components, and to easily write bindings into libraries we want to reuse in any of those languages.
Modern software architectures - PHP UK Conference 2015Ricard Clau
The web has changed. Users demand responsive, real-time interactive applications and companies need to store and analyze tons of data. Some years ago, monolithic code bases with a basic LAMP stack, some caching and perhaps a search engine were enough. These days everybody is talking about micro-services architectures, SOA, Erlang, Golang, message passing, queue systems and many more. PHP seems to not be cool anymore but... is this true? Should we all forget everything we know and just learn these new technologies? Do we really need all these things?
Posterous recently deployed Riak to serve as their content cache. In this talk, Julio Capote will cover why the engineering team chose Riak for the use case. He'll also share some details on the old post cache and its problems, what solutions they evaluated, and how they settled on Riak.
Server Check.in case study - Drupal and Node.jsJeff Geerling
Server Check.in is a simple, inexpensive website and server monitor. See how Server Check.in was built, and how it uses Drupal and Node.js together to build an easy-to-use and powerful web application. See more at https://servercheck.in/
Modern developers use virtualized "single use" development environments to reduce time tweaking servers, allowing more time developing. Teams share configurations to eliminate endless "works for me" debug loops, while rebuilding and/or setup is a simple command taking minutes, not hours or days. This intro talk will create a base for attendees to build from and investigate the various technologies like Vagrant, VirtualBox, Puppet, Containers, and Virtual PHP. If your development environment is not virtualized, catch up, it's what all the "cool kids" are doing.
This is my presentation about CFWheels at CFObjective ANZ, November 2010, Melbourne, Australia.
ColdFusion on Wheels (CFWheels), is an elegant framework inspired by Ruby on Rails.
Big Data! Great! Now What? #SymfonyCon 2014Ricard Clau
Big Data is one of the new buzzwords in the industry. Everyone is using NoSQL databases. MySQL is not cool anymore. But... do we really have big data? Where should we store it? Are the traditional RDBMS databases dead? Is NoSQL the solution to our problems? And most importantly, how can PHP and Symfony2 help with it?
4Developers 2015: Scaling LAMP doesn't have to suck - Sebastian GrodzickiPROIDEA
Sebastian Grodzicki
Language: Polish
Tradycyjny LAMP sprawdza się świetnie … w środowisku deweloperskim. Nawet jeżeli nie tworzysz kolejnego Facebooka, to każda niedostępność Twojego serwisu kosztuje Cię sporo nerwów oraz pieniędzy. Awaria wystąpi wcześniej lub później. Pytanie nie brzmi "czy" leczy "kiedy". Dlatego warto o tym pomyśleć zawczasu i zbudować taką architekturę, która nie jest podatna na niedostępność z powodu awarii jednego z jej elementów. Jakie narzędzia wybrać? Jak wycisnąć z nich ostatnie soki?
Automating Your Daily Tasks with Scripting - RubyConf 2015 TaiwanAdler Hsieh
This talk aims to go through basic scripting skills in Ruby. Participants will have a better understanding in managing their daily tasks with scripting. For example, we can setup automated scripts to delete old files on a daily basis instead of doing it manually. These can be done with Bash, Perl and many other scripting languages, but among of which Ruby is better known for its readability. It is easier to write, maintain, and reuse. It saves some time on system management and allows us to put more focus on the projects.
A Gentle Introduction to Functions-as-a-ServiceValeri Karpov
Slides from my talk on functions-as-a-service at Wyncode Academy in Miami in April '18. Provides an overview of the tradeoffs between different FaaS providers
Presentation at the Plone Conference Brazil 2013.
How to create a Plone deployment that performs like crazy and survives not only a datacenter failure, but even keeps on running when all Plone heads are down.
Redis : Database, cache, pub/sub and more at Jelly button gamesRedis Labs
Nir Shney-Dor of Jelly button games talks about how he uses Redis across many different use cases - as a persistent db, cache, for pub/sub, leaderboards etc etc..Fun walkthrough of all the uses one can put Redis to.
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
In this talk, I will talk about why log files are horrible, logging log lines, and more structured performance metrics from large scale production applications as well as building reliable, scaleable and flexible large scale software systems in multiple languages.
Why (almost) all log formats are horrible will be explained, and why JSON is a good solution for logging will be discussed, along with a number of message queuing, middleware and network transport technologies, including STOMP, AMQP and ZeroMQ.
The Message::Passing framework will be introduced, along with the logstash.net project which the perl code is interoperable with. These are pluggable frameworks in ruby/java/jruby and perl with pre-written sets of inputs, filters and outputs for many many different systems, message formats and transports.
They were initially designed to be aggregators and filters of data for logging. However they are flexible enough to be used as part of your messaging middleware, or even as a replacement for centralised message queuing systems.
You can have your cake and eat it too - an architecture which is flexible, extensible, scaleable and distributed. Build discrete, loosely coupled components which just pass messages to each other easily.
Integrate and interoperate with your existing code and code bases easily, consume from or publish to any existing message queue, logging or performance metrics system you have installed.
Simple examples using common input and output classes will be demonstrated using the framework, as will easily adding your own custom filters. A number of common messaging middleware patterns will be shown to be trivial to implement.
Some higher level use-cases will also be explored, demonstrating log indexing in ElasticSearch and how to build a responsive platform API using webhooks.
Interoperability is also an important goal for messaging middleware. The logstash.net project will be highlighted and we'll discuss crossing the single language barrier, allowing us to have full integration between java, ruby and perl components, and to easily write bindings into libraries we want to reuse in any of those languages.
Modern software architectures - PHP UK Conference 2015Ricard Clau
The web has changed. Users demand responsive, real-time interactive applications and companies need to store and analyze tons of data. Some years ago, monolithic code bases with a basic LAMP stack, some caching and perhaps a search engine were enough. These days everybody is talking about micro-services architectures, SOA, Erlang, Golang, message passing, queue systems and many more. PHP seems to not be cool anymore but... is this true? Should we all forget everything we know and just learn these new technologies? Do we really need all these things?
Posterous recently deployed Riak to serve as their content cache. In this talk, Julio Capote will cover why the engineering team chose Riak for the use case. He'll also share some details on the old post cache and its problems, what solutions they evaluated, and how they settled on Riak.
Server Check.in case study - Drupal and Node.jsJeff Geerling
Server Check.in is a simple, inexpensive website and server monitor. See how Server Check.in was built, and how it uses Drupal and Node.js together to build an easy-to-use and powerful web application. See more at https://servercheck.in/
Modern developers use virtualized "single use" development environments to reduce time tweaking servers, allowing more time developing. Teams share configurations to eliminate endless "works for me" debug loops, while rebuilding and/or setup is a simple command taking minutes, not hours or days. This intro talk will create a base for attendees to build from and investigate the various technologies like Vagrant, VirtualBox, Puppet, Containers, and Virtual PHP. If your development environment is not virtualized, catch up, it's what all the "cool kids" are doing.
Proper Care and Feeding of a MySQL Database for Busy Linux AdministratorsDave Stokes
Do you 'also' have MySQL DBA responsibilities as part of your job but have no DBA training? This presentation covers a lot of the DBA level info for those who have a Linux admin background but are not DBAs
The Proper Care and Feeding of a MySQL Database for Busy Linux Admins -- SCaL...Dave Stokes
If you are a Linux administrator and ALSO have to take care of a MySQL databases, this presentation if for you, While it will not turn you instantly into a DBA it will help you understand how to properly care and feed your instances
Linuxfest Northwest Proper Care and Feeding Of a MySQL for Busy Linux AdminsDave Stokes
Did they also hand you the responsibility for the database with all the other Linux admin duties but you have no DBA training? This is for you. Learn the tricks they don't mention to keep you data safe
An introduction to Netty. A powerful framework to develop networking applications.
This is suppose to be followed as hands on training, as the exercises on the slides imply, but can be also used an introduction guidance.
[HKOSCON][20180616][Containerized High Availability Virtual Hosting Deploymen...Wong Hoi Sing Edison
Hong Kong Open Source Conference 2018
Containerized High Availability Virtual Hosting Deployment with Kubernetes, Docker and Ansible
https://hkoscon.org/2018/topic/containerized-high-availability-virtual-hosting-deployment-kubernetes-docker-and-ansible/
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
6. The Past
●
Fanatic C# Developer for 10 years
●
Lived in MS echo chamber
●
.NET CF, WinForms, WebForms, MVC, WF, WCF, WPF,
Silverlight, LINQ, EF, MS SQL, VS, etc.
●
Love Linux: in my dreams I was developing on my own Linux
machine!
7. Converting; Why?
●
Tired of MS echo chamber
●
Feel lonely
●
Love Linux and Open Source
●
To run a huge private server with less than 2GB of RAM
– Clean installation of Ubuntu server 14.04 takes less than 50MB of RAM
– Windows Server 2012 Essentials needs at least 2048MB?
●
To observe copyright and licensing (VS, Windows Server/Client, SQL Server,
etc.)
8. My Ideal Programming
Language
●
Open Source
●
Cross platform (Practically)
●
Ready to use with mature ecosystem (Practical)
●
Strongly-type / Type-safe
●
Lambdas / Closures => Functional (I was thinking about LINQ)
●
Object Oriented (Interfaces, Generics, ...)
●
Modern (Not Verbose: Type inference, Auto Getter/Setter, …)
9. Available ones
●
C# - Cross Platform (Practically)
●
Python / Ruby / JS - Strongly-type / Type-safe
●
Java - Modern (Not Verbose: Type inference, Auto Getter/Setter,
…) and didn't support lambdas at the time
●
Go - Ready to use with mature ecosystem | Object Oriented
(Interfaces, Generics, …)
●
Scala - What?
10. Scala Features
●
Type inference
●
Powerful Syntax
●
Functional
●
DSL
●
Immutable Structures
●
Case Classes
●
Pattern Matching
●
Implicits
●
Macros
●
Powerful Type System and
Standard Library
●
etc.
12. Extra Bonus
● Moore's law dying and the need of concurrent programming
– Facts
●
First 3GHz single core CPU at 2002
●
It's 13 years and there are still just 3GHz CPUs
●
But with more cores (your cellphone would have 4)
●
Thread blocking is very expensive
– Scala and other functional programming languages shine here
– Akka is another bonus
●
Somebody created a Redis clone on top of Akka (CurioDB)
● Big Data
– Spark is on top of Scala and Akka (100x faster than Hadoop)
13. My New Ecosystem
● Scala
– The only available language which meet my needs
● Play Framework
– Mature, Type-safe (even templates), High Velocity, Async, Iteratees,
Simple to Use
● MongoDB
– Open Source, Fast, Distributed, Schema Free, Not good for everything
● ReactiveMongo
– Blazingly Fast, Async, Iteratees
16. Deployment Requirement
●
Development Machine
– JDK
– Activator (Play)
– Git (to push the binaries to the
server)
– Bash
●
Production Server
– JRE (I don't use this server as build machine)
– Nginx (as front-end if you have more than one
web apps)
– Virtualmin
●
DNS
●
Main Server
●
Webmail
– MongoDB
– Git (as binary repository for publishing process)
20. Real-world Projects
● Tehran International Book Fair (TIBF) Website
– Up to 40,000 unique visitors daily
– 2,287 publishers
– 361,788 books
● TIBF Publisher Registration System
– Registration process of TIBF
– About 24,000,000,000 IRR ≈ 700,000$ total transactions in three weeks
● TIBF Student Coupon Selling System
– With a quota system based on provinces
– More than 500 request/sec
– About 87,000,000,000 IRR ≈ 2,600,000$ total transactions in three weeks
21. Challenges
●
TIBF Website
– Large number of RPS on book search page
●
Users can find their favorite book location
●
TIBF Registration System
– Complicated process on top of NoSQL database
●
TIBF Student Coupon Selling System
– Large number of RPS
– Large number of financial transactions
– Integration with Bank
Summary:
●
High availability
●
Large number of RPS
●
Complicated processes on top of NoSQL
● One small server for all of them
– 6 cores
– 6 GB of RAM
– Non-SSD hard disk
22. Solutions – High Velocity
●
Play is a high velocity Framework by default
●
Using async/non-blocking data-access library: ReactiveMongo
●
Futures and Promises
●
Iteratees (for rendering huge data with minimum resource
usage: RAM or CPU)
●
Everything is perfect; even didn't need caching!
23. Solutions – NoSQL
●
Manage relationships asynchronously
– Get fair information → Get registration information → Get basic information → …
●
All non-block
– Repeat data
●
Fairs in which the exhibitor is registered
●
Registered exhibitors for each fair
– Search
●
Generate keywords on CUD, don't use RegEx
●
NoSQL is not suitable for a system with complex relationships
●
Reports are painful but amazingly fast
– Need a job to collect data into another collection
– For real-time reports, data should be collected on CUD events
24. Solutions - Integration
●
Scala is on top of JVM with a huge high quality libraries
– I needed Rijndael-256 which is not common and is not implemented in Java
standard libraries
●
Bouncycastle
●
Also used
– Play's WS as web service client
– Scalaxb to generate WSDL classes (they didn't support REST)
– Again everything is async
25. Libraries and Tools - 100%
Free●
OS
– Linux (server and development)
●
IDE and Tools
– Activator
– Scala IDE
– RoboMongo
– Git
●
DB
– MongoDB
●
Front-end Server
– Nginx
●
Framework Libraries
– Play Framework
– ReactiveMongo
– Macwire (compile-time DI)
– Silhouette (authentication)
– Scrimage (image resizing)
– Persianutils by Bahman Movaghar
– Bouncycastle
– Xcala; my own application library
– etc.
26. Well Done!
●
Common
– Full-stack development
– Full async architecture (top to
bottom)
– Very good RAM usage except for
exporting Excel files
●
TIBF Website
– Less than 100ms responses on
peak times
●
TIBF Registration System
– Most of the publishers were happy
– Most of the operators were happy
– I was agile to implement real-time
requests in minutes or hours
●
TIBF Coupon System
– Boom! Things didn't go well
– Although about 5,000 successful
purchases have been done in a couple of
hours...
27. Failure
●
After lunching the TIBF coupon website, all websites seemed down
●
but the system load was OK!
●
Incomplete payments started to show up
– Verified payments without having invoices marked as paid
– Double payments
●
Stress
– Loneliness
– Failure
28. Failure
I Failed :(((((
●
Bad feeling about Scala
●
Feels like someone is pouring ice water on my head
●
A weird kind of relief
●
Everything got quiet
29. Didn't Give Up
●
Took a break, got relaxed and focused
●
Checked the bandwidth
●
Checked the server disk speed
●
Checked the logs
– Nginx: Too many open files
●
Checked the connections
– netstat -na | grep :80 | wc -l
●
About 4,000 open connections!
●
Google
– Default OS limitation for open
files is 4,000
– There is a simple solution for
“Too many open files”
– It was a victory! I could have
reach to the OS limits on a
small server
30. Fix
●
Add “fs.file-max” to “/etc/sysctl.conf”
●
Set soft and hard limits in “/etc/security/limits.conf” for Nginx and the user
by which Play apps are running
●
Set “worker_rlimit_nofile” in “/usr/local/nginx/conf/nginx.conf”
●
The server begin responding but the RAM was still too low
– Exporting Excel files for operators eats the RAM
– The laptop I used for this presentation has
more RAM than the server did (6GB)
6GB
3M$
31. Final Relief
●
They gave me a giant server
– 120 Core
– 128 GB of RAM
●
I used at most lest than 1% of this server
resources!
●
Although again I increased the default
OS limitation on number of open files
●
And their network got a serious problem
35. Thank you
Build amazing things with your lovely tools
Iran-SUG => Iranian Scala User Group
Amir Karimi <a.karimi.k@gmail.com>
@4m1rk
www.dev-frame.com