Presentation: Meet the Node.js anti-patterns
As Node continues to go from strength to strength, being widely adopted not only within the startup community but more and more by the Enterprise community, a number of anti-patterns are beginning to emerge.
Pedro: I am CTO of YLD. At YLD, we do mainly consulting around Node.js. My responsibilities there are in terms of scoping new technologies around the Node.js ecosystem and beyond. I'm also part of the research team at the firm, where we investigate, develop and document new solutions to current problems our customers face.
I am also responsible for doing software architecture development for customers, and I support teams across several projects in terms of architecture, code reviews and project planning.
Igor: For me, it’s a bit of the same. I’m also working on the research team where we scope out new technologies. By research, I mean our clients share problems and we help research solutions. We see recurrent problems in our clients. As there are different approaches to solve each of these problems, we research different ways to solve them. So we evaluate different approaches, tools and products to maintain an internal knowledge base that supports our teams. In addition, I also do architectural review engagements, and support our teams both in technical choices and general consulting matters.
Pedro: We have experience with Node.js community and ecosystem since the very early days. We were very early adopters, so we have seen a lot of projects with the rising adoption of Node.js. The adoption in the enterprise is a real thing that we've been seeing in the last two or three years. With that, there are a lot of developers coming into the ecosystem that are bringing knowledge from other platforms (mostly Java and C#, but also others). Some of the time, they bring habits that don’t quite fit into Node’s ethos. Our objective was to make a quick view of the most damaging patterns that we keep seeing that will hurt them in the long run.
Igor: We will see instances of the patterns and then a solution. If the instance is code, then we will see a solution in code. If the instance is an architectural pattern, we will see some diagrams. We will cover some drawbacks and advantages of taking another approach.
Igor: Sure. We currently have a list of 30 anti-patterns. One of them is the Kitchen Sink module: a file module that has everything that doesn’t fit anywhere else. That's an anti-pattern.
Pedro: We have gathered so many of them. For instance, using synchronous iterations calls without limits. They will work fine during development time, where you have a very small and controlled dataset. But once you bring that into the wild and your service is serving concurrent requests and you're starting several IO operations in parallel, depending on the collection size, can easily lead to high memory consumption and all the problems that come with it.
These are some of the types of things we plan to discuss in the talk.
Architecting for Failure
Building fault tolerate systems that are truly resilient
Architectures You've Always Wondered about
QCon classic track. You know the names. Hear their lessons and challenges.
Containers - State Of The Art
What is the state of the art, what's next, & other interesting questions on containers.
Dark Code: The Legacy/Tech Debt Dilemma
How do you evolve your code and modernize your architecture when you're stuck with part legacy code and technical debt? Lessons from the trenches.
Data Engineering : Where the Rubber meets the Road in Data Science
Science does not imply engineering. Engineering tools and techniques for Data Scientists
Engineering Culture @ <insert cool company names here>
Culture, Organization Structure, Modern Agile War Stories
Fast & Furious: Ad Serving, Finance, & Performance
Learn some of the tips and technicals of high speed, low latency systems in Ad Serving and Finance
Java: Interesting Stuff in the Space
What do you need to know about Java: JDK9, low latency, and more.
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS ideas
Modern Distributed Architectures
Migrating, deploying, and realizing modern cloud architecture.
Modern Learning Systems
Real world use of the latest machine learning technologies in production environments
Observability Done Right: Automating Insight & Software Telemetry
Tools, practices, and methods to know what your system is doing
Performance myths that need busting and the tools & techniques to get there
Practical Cryptography & Blockchains: Beyond the Hype
Looking past the hype of blockchain technologies, alternate title: Weaselfree Cryptography & Blockchain
Security: The Attacker's Mindset
How Attackers Think. Penetration testing techniques, exploits, toolsets, and skills of software hackers
Softskills: Essential Skills for Developers
Skills for the developer in the workplace
Workhorse Languages, Not Called Java
Workhorse languages not called Java.