# backend development essentials

আমরা অনেক প্রোগ্রামার আছি যারা বাকেন্ডের প্রোপার জ্ঞান না থাকার কারণে অনেক কিছু শেখার পরেও মনে হয় এটা বুঝি আমি করতে পারব না আরও অনেক কিছু । অনেক সময় বুঝেই উঠতে পারি না যে কখন কোন যায়গায় কোন টেকনোলজিটি ব্যাবহার করতে হবে । তার একটা ছোট খাটো রোডমাপ দেওয়ার চেষ্টা করব ।

আগে কিছু server application Responsibility বা সার্ভারের কাজ কি ?

> 1. Listen Request
>     
> 2. Process
>     
>     এখানে আমাদের অনেক কিছু নিয়ে কাজ করতে হয় । লাইক ডাটা ফিল্টার সর্টিং এঁর মত আরও অনেক কঞ্চেপ্টস
>     
> 3. Response
>     

**1 . API design**

> 1. REST api
>     
> 2. GraphQL
>     
> 3. gRPC
>     
> 4. SOAP (less than 1% খুব বেশি ব্যাবহার হয় না ১% মত কাজে লাগে সেটাও আডভান্স কাজে )
>     
> 5. web socket
>     
> 6. Message Broker (not Beginner friendly concepts)
>     

**2 . API Security**

> 1. JWT Token
>     
> 2. Refresh Token
>     
> 3. OAuth2
>     
> 4. SAML
>     
> 5. indentity Providers ( cognito, Auth0, Firebase, Okta)
>     
> 6. Role based authentication
>     

**3 . API Testing**

> 1. Unit Testing
>     
> 2. Acceptance Testing
>     
> 3. Load Testing
>     

**4 . API Documentation**

> 1. Swagger
>     
> 2. Postman
>     

**5 . Database**

> **NoSQL**
> 
> 1. MongoDB
>     
> 2. AWS DynamoDB
>     
> 
> **SQL**
> 
> 1. PostGreSQL (এটা MySQL এঁর থেকে অনেক বেশি পারফরমেন্ট )
>     
> 2. MySQL
>     
> 3. MSSQL / Oracle
>     
> 
> **In memory (কেশিং এঁর কাজে ব্যাবহার করা হয় )**
> 
> 1. redis \[ এটা শুধু কেশিং এঁর কাজে ব্যাবহার করা হয় না আরও কিছু আডভান্স কাজে লাগে \]
>     
> 2. Mem Cached
>     
> 
> **Graph Database**
> 
> 1. Neo4J
>     

**6 . linux server**

**7 . Cloud computing**

**8 . devOps**

> এখানকার ৬,৭,৮ আডভান্স কঞ্চেপ্ট এগুলো নিয়ে বিনিনার অবস্থায় চিন্তা করার দরকার নেই ।
