Learning Material: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 124: | Line 124: | ||
* especially for Lambda functions | * especially for Lambda functions | ||
= Graph = | |||
We use Neo4j graph engine and Cypher query language | |||
== references == | |||
* https://neo4j.com/docs/cypher-cheat-sheet/current/ | |||
* https://neo4j.com/docs/cypher-refcard/current/ | |||
= Izara Backend = | = Izara Backend = | ||
Line 144: | Line 154: | ||
* [[Idempotence and Race Conditions]] | * [[Idempotence and Race Conditions]] | ||
* [[Standard Config Table Per Service]] | * [[Standard Config Table Per Service]] | ||
== Tasks == | |||
* Start working with Serverless Framework and our Empty Service Template to deploy resources to AWS | |||
* Create a Lambda and DynamoDB table using iamRoleStatements to allow the Lambda to perform queries on Dynamo table | |||
*: sample in Empty Service Template | |||
* Create 3 Lambda functions LambdaA posts to an SNS topic, LambdaB and LambdaC each have an SQS with Lambda triggers that subscribe to SNS and invoke when LambdaA posts | |||
*: eg: | |||
* Create Lambda and API Gateway using http event, use Postman to send request from client to backend Lambda via API Gateway | |||
*: eg: | |||
* Try to understand Complex Filter / Search Result / Sort Result flow | |||
*: including [[Standard LogicalResults Per Service|ProcessLogical]] and [[Standard FindData Per Service|FindData]] flows | |||
*: eg: | |||
= Izara Frontend = | = Izara Frontend = |
Revision as of 01:13, 5 October 2022
Javascript
Use Node environment to learn javascript, will need to change "alert" to "console.log", and browser objects like "document." will not be available
coding basics:
- https://javascript.info/variables
- https://javascript.info/types
- https://javascript.info/operators
- https://javascript.info/comparison
- https://javascript.info/ifelse
- https://javascript.info/switch
- https://javascript.info/logical-operators
- https://javascript.info/function-basics
- https://javascript.info/function-expressions
- https://javascript.info/javascript-specials
- timestamps
- try/catch/finally blocks
- environment variables
- validating function params or external data before use
data types:
- https://javascript.info/data-types
- https://javascript.info/number
- https://javascript.info/string
- https://javascript.info/array
- https://javascript.info/array-methods
- https://javascript.info/map-set
- https://javascript.info/keys-values-entries
- https://javascript.info/date
- https://javascript.info/json
advanced:
- https://javascript.info/modules
- https://javascript.info/garbage-collection
- https://javascript.info/object-methods
Node
npm
async/await
Git
- https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud
- https://www.atlassian.com/git/tutorials/setting-up-a-repository
- https://www.atlassian.com/git/tutorials/saving-changes
- https://www.atlassian.com/git/tutorials/git-ssh
How we use git in Izara:
AWS
AWS offers a free tier, you can create an account and use most services at a limited level for free for one year, then cancel the account (or stop all services) before the year is over.
Serverless Framework (sls)
- https://www.serverless.com/framework/docs
- We use the Serverless Framework to deploy AWS resources
- We do not use the Serverless hosted dashboard
- Learn the basic concepts of Serverless Framework but do not need to learn everything, we use only some elements of the framework and have a standard template for the AWS resources we use
Lambda
Lambda container persistence
- Lambda environments are not discarded after each use, they can be reused for multiple invocations
- We can use this to maintain global variables, such as database connections
DynamoDB
- Understand how partition(hash) and sort(range) keys work, why they are used
Pagination
- If there is the chance a query can return a large amount of data we need to paginate query results
- Receive a subset of all results and process them, then eg re-invoke the Lambda to process the next set of results
- messy notes: 2021-05-03 - DynamoDB pagination
SNS
SQS
SNS/SQS Message delivery
SQS Batch processing
API Gateway
API Gateway Authorizer Lambda Functions
Websockets
S3
Design Concepts
Race Conditions
Idempotence
- messy notes: 2021-05-03 Idempotence ideas
- some notes about idempotent Lambda processing: 2020-11-28 - Handling Message Batches from SQS Queues
Immutable Data
Microservices
Middleware
- especially for Lambda functions
Graph
We use Neo4j graph engine and Cypher query language
references
Izara Backend
Services to study
Project Concepts
Information in the below pages should be understood before developing:
- Repository structure
- Syntax - Backend services
- Remote repository and workspace structure
- Communication between services
- Lambda handler functions
- Idempotence and Race Conditions
- Standard Config Table Per Service
Tasks
- Start working with Serverless Framework and our Empty Service Template to deploy resources to AWS
- Create a Lambda and DynamoDB table using iamRoleStatements to allow the Lambda to perform queries on Dynamo table
- sample in Empty Service Template
- Create 3 Lambda functions LambdaA posts to an SNS topic, LambdaB and LambdaC each have an SQS with Lambda triggers that subscribe to SNS and invoke when LambdaA posts
- eg:
- Create Lambda and API Gateway using http event, use Postman to send request from client to backend Lambda via API Gateway
- eg:
- Try to understand Complex Filter / Search Result / Sort Result flow
- including ProcessLogical and FindData flows
- eg:
Izara Frontend
React
Microfrontends
- see messy notes and references at 2021-01-31 - Micro Frontends