Autoscaling Techniques and Blockchain-based Architectures for Performant and Dependable Complex Distributed Systems