What people are asking from us
How you integrate to AWS services?
The first option is to use the services behind REST API endpoints in serverless lambda functions (java aws sdk). In some cases you need to access the AWS SDK on client side (e.g. Cognito authentication, uploading files to s3 is faster and easier to do directly from phone than using rest api as a proxy in front of s3). To enable the use in App we have integrated some functionalities from s3 and cognito aws sdk c++ modules to be used in our "native felgo" projects. An other option is to use embedded felgo running inside native app and use for example native AWS Amplify etc. libraries. We prefer the embedded approach.
What is Felgo SDK in a nutshell?
Felgo SDK is a Framework for creating iOS, Android and Desktop (Windows, Mac) Apps from one codebase. It is based on Qt Framework that can be used for creating UIs for different devices (e.g. Rasberry, Arduino, microcontrollers etc.). Felgo SDK include features build on Qt Framework that makes the iOS and Android development even more easier than using the Qt Framework as base tool.
Do you do react-native, native iOS/Android, Xamarin or Flutter development?
react-native, Xamarin and flutter no. Native iOS/Android kind of yes if needed. You can embed the felgo qml into native apps and in some cases it is necessary to implement the app in this way.
Do you do react, angular or vue development?
No. From these alternatives we like most angular and vue. Because our focus is on short time to market time, we have end up to use the tools that have very low learning curve and you can get results fast.
What is AWS serverless in a nutshell?
Serverless in a nutshell means services in a cloud without own server. For example normally you need to have a web server(s) and/or REST API server(s) for serving your apps for your users and these servers are "fixed cost" even nobody use those. In serverless you don't have own servers. For example AWS serverless database (Aurora) instance is created automatically (fast) when there is a need for database. Same applies to REST API services too (Lambda based or Faragete based). So basically this means that you pay only when those services are in use. And the best thing with these services is that they scale automatically to serve huge amount of users if you get lucky and get into this situation.
They are automatically scalable environments that are pretty easy to setup. Comparing for example to Kubernetes environments much easier. Also form costs point of view they are perfect for example for start-up companies, that often don't have much customers and use of these services in the beginning. With serverless you can get for this period "zero-cost" app and backend without fixed fees You pay only for real use. If you have a lot of customers then you pay more but on the other hand then you will have most likely customers too and income.
What is Aurora database?
Aurora database is an AWS RDS database that can be run serverless. Aurora is compatible with PostgreSQL and MySQL. In other words you can us it like any PostgreSQL or MySQL database. We use it as PostgreSQL database.
Do you do work against other databases like Oracle etc.?
Yes. For database connections we use JDBC (Java Database Connect). There are a lot of jdbc drivers for different databases. As long there is a JDBC driver for database we can do work on the selected database.
How you create and maintain REST APIs?
Our REST API implementations are build on AWS API Gateway and AWS Lambda functions. For authentication we use AWS Cognito. The actual REST API implementation is done in AWS Lambda functions and here we use java. The tricky part using this approach is fragmentation that makes for example maintenance etc. difficult if you have a lot of REST API endpoints (= lots of API Gateway + Lambda configurations). To overcome these we have create a script that can create and update API Gateway and configure it to use correct Lambda functions. With this script you can also create new version of the REST API easily after you have improve your App and REST API endpoints have changes - without removing the old endpoint that old Apps are still using. In short the REST API development process is following:
- Create a java project containing all the REST API endpoints in one project
- Configure our deployment script to create/update REST API gateway with proper API Gateway endpoints mapped to correct Lambda functions
- Run the script and your Lambda functions are deployed to AWS and mapped to REST API endpoints configured to API Gateway
In the deployment script you can easily change the "root paht" to dev, v1, v2 etc. depending on what work you are doing. For example api.example.com/dev is for development, api.example.com/v1 is the first version of the api and api.example.com/v2 second version of the api etc.
Is AWS serverless only cloud back-end you do work with?
At the moment yes. We are currently working on making serverless development as easy on Azure as it is now on AWS. After this work is done, we will start to do back-end work on Azure too.
Do you build solutions for on-premise back-ends?
Yes. In these solutions the AWS API Gateway will be replaced with Apache http server that will take responsibility of authenticating users and forwarding the authenticated requests to actual REST API implementation. This is done by using mod_openidc (OpenID Connect module) or shibboleth (SAML). Lambda functions are replaced with Spring boot REST API services.
How you publish iOS and Android Apps?
Manually by uploading the app to AppStore/GooglePlay. We are aware of Felgo Cloud Build Dashboard but at the moment we feel this manual approach more safe (no developer certs on the cloud) and simple (e.g. aws sdk c++ module part linking to app is little bit tricky to configure).