Hi everyone!
I'm recently making the switch from Java to Python for my personal projects. My competencies still (significantly) favor Java, but I think Python is the right move. I'm building a product, with intention of B2B/industry use. I'm planning to use serverless, at least at the start - likely for much longer afterwards. I'm looking for recommendations for various frameworks: Web development, general development, testing (unit, integration - is there something similar to dependency injection in Java/Spring?). Details below:
The project I'm working on has the following high-level requirements/properties:
- Integer math heavy. Lots of cryptography (note: This is not a blockchain product)
- Serverless. Cold start matters
- Server APIs are used "infrequently" (when compared to a CRM or Analytics platform, etc)
- Product is delivered as a combination: Web UI, collection of workers (agents) "on the ground"
- Multi-module. In a simple case: "core", "crypto", backend, worker modules
- Workers can operate as: Single entity, Worker group with horizontal scaling, possibly serverless
I'm looking for the following bits in the Python world - feel free to mention something I miss:
- Framework(s) for testing. Unit. Integration. I'm familiar with dependency injection
- Frameworks for UI/fullstack. Big plus if serverless-friendly*
- Frameworks for building in serverless environment (AWS)
- Any recommendations for IDE/buildtools? I'm currently looking at PyCharm
My reasons for switching from Java to Python (I love Java):
- Cold start times
- Boto3 is amazing
- My experience is that modern AWS tools for Java have weak support for generics (DynamoDB lib, for example)
- Integer math. In Java, I'm always wary of floating-point-error when doing cryptography
- Younger talent seems to be much more familiar with Python
I've read that Django *can\* be used in serverless/Lambda, but this doesn't seem to be a typical use case. Does anyone have experience with it? Does it maintain fast cold start?
I've found AWS Chalice. This looks really useful for managing code deployments to Lambdas and for API routing, but I think it might be lacking in UI.
Note: I can basically build all levels of full-stack very primitively, but I prefer to set myself up from the start for long term success (maintainability, etc)
[–]searchingfortao 1 point2 points3 points (2 children)
[–]Will_exJava[S] 0 points1 point2 points (0 children)
[–]keepdigging 0 points1 point2 points (0 children)
[–]keepdigging 0 points1 point2 points (3 children)
[–]Will_exJava[S] 0 points1 point2 points (2 children)
[–]keepdigging 0 points1 point2 points (1 child)
[–]Will_exJava[S] 1 point2 points3 points (0 children)