Go for serverless functions - Edson Ticona Zegarra

Learn essential considerations, best practices, and common pitfalls when building serverless functions with Go. Covers architecture, resource management, and real-world use cases.

Key takeaways
  • Serverless functions run in a managed compute environment where providers handle infrastructure, scaling and operational concerns

  • Key characteristics of serverless:

    • Pay only for actual usage/execution time
    • Auto-scaling based on load
    • Limited execution time windows (10-15 mins)
    • Shared temporary filesystem between executions
    • File descriptor and memory limits
    • Cold starts impact latency
  • Important considerations when using Go:

    • Global state may persist between executions
    • init() functions used for initialization
    • No main() package in cloud functions
    • Different function signatures per provider
    • Need to handle connection pooling carefully
  • Common gotchas and challenges:

    • File descriptor leaks more apparent due to tight limits
    • Database connection management needs special attention
    • Cold starts can add 1-2 seconds latency
    • Provider-specific behaviors for error handling
    • Temporary filesystem state may persist
  • Best practices:

    • Use init() for one-time initializations
    • Monitor resource usage carefully
    • Consider latency requirements
    • Plan for proper scaling
    • Understand provider-specific limitations
  • Ideal use cases:

    • Event-driven processing
    • Batch operations
    • Scheduled tasks
    • Workloads with uneven load patterns