අද මන් කියන්න යන්නේ Firebase ගැන පොඩි introduction එකක්. මන් ගිය දවස් ටිකේ ටිකක් වැඩ කලා පොඩි වැඩ වගේකට. ඒකත් එක්ක තමා firebase ලගෙ features අල්ලල ගියෙ. AWS, Heroku වගේ කරල තියන කට්ටියනම් මේවා අනිවා දන්නවා. නොදන්න අයට දැනගන්න මන් කරැණු ටිකක් දාන්නම් දන්න විදියට
.Firebase යනු
- - - - - - - - - -
Firebase service එකේ මූලික අරමුණ තමයි web sites, mobile applications etc products වල තියෙන common requirements අදුරගෙන, ඒ කියන්නේ developers ලට නිතරම වද වෙන්න වෙන කොටස් වලට එක තැනකින් විසදුමක් දීම. ඒ කියන්නෙ අපි හිතමු දැන් ගොඩක් apps වල user authentication තියනවා. අපි මේක manually කලොත් auth වෙන විදිහ හදලා tokens හදලා, endpoints හදලා එක විකාරයක් කරන්න වෙනවනේ. ඊට අමතරව අපිට අපේ server එක ගැන බලන්නත් වෙනවා. traffics, security, updates එහෙම කරන්න වෙනවා. firebase ලගෙ සිද්ධිය තමයි ඒවා එයාලා කරනවා අපිට තියෙන්නේ functionality එක හදලා වැඩේ කරගෙන යන්න. server එක ගැන වද වෙන්න දෙයක් නැහැ. ඒ නිසා මේ concept එකට Server-less Architecture කියලත් කියනවා.
දැන් බලමු මොනද තියන services කියලා.
ඔය මුල් 4 තමා මූලික services ටික firebase ලගෙ. ගිය දවස් ටිකේ මම use කලේ auth එකයි database එකයි. අපි බලමු ඒ මොනද කියලා.
Authentication
- - - - - - - - - -
අපිට පුථවන් මේකෙන් මන් කලින් කිව්ව වගේ perfect විදිහට user auth එකක් හදන්න. මන් මේකෙ overview එක කියල docs ටික දාන්නම්. උඹල කැමතිනම් බලපන් ඒකත්. මන් ආයෙ docs කියන එක තේරැමක් නැහැ.
කට්ටිය දන්නවනේ Token Based Authentication එක. ඒ කියන්නේ user IDs වලට අදාලව token එකක් තියනවා randomly generate කරපු. userව verify කරන්න ඒක භාවිතා කරනවා. මෙතනදි තියනවා id_token කියන ඒ token එක අපි ඒක හැම API call එකකදිම භාවිතා කරන්න ඔිනි. ඒක decode කරල තමා අදාල user ව හොයා ගන්නේ. තව විශේෂ token එකක් තියනවා ඒ තමා refresh_token කියන එක, ඒක භාවිතා කරන්නේ new id_token එකක් retrieve එකගන්න මොකද id_token එක valid වෙන්නේ 1hr විතරයි. ඊට පස්සේ expire වෙලා යනවා. අපි refresh_token එක use කරල අලුත් id_token එකක් අරන් දෙන්න ඔිනි වෙනවා userට එතකොට. එහෙම කරල තියෙන්නෙ security එකට මොකද id_tokens වෙන කා අතට හරි ගියොත්(මොකද ඒක හැම තැනම include වෙන නිසා) ඒ ටික වැඩක් නැති වෙනවනෙ කෙටි කාලෙකින. එතකොට game over
මතකද facebook එකේ ඔහොම සිද්ධියක් උනා මෑතකදි. අපිට තව ඔන්නම් පුථවන් හැම token එකක්ම revoke කරල දාන්න මොකක් හරි සිද්ධියක් උනොත්. ඉතින් මේ වගේ ඉතා වැදගත් ගොඩක් හොද features සෙට් එකක් auth එකේ තියනවා, අපි මුකුත් හදන්න දෙයක් නැහැ. SDK එකක් හරි, REST API එක හරි භාවිතා කරලා මේ දෙවල් භාවිතයට ගන්න පුලෝ.
කට්ටිය දන්නවනේ Token Based Authentication එක. ඒ කියන්නේ user IDs වලට අදාලව token එකක් තියනවා randomly generate කරපු. userව verify කරන්න ඒක භාවිතා කරනවා. මෙතනදි තියනවා id_token කියන ඒ token එක අපි ඒක හැම API call එකකදිම භාවිතා කරන්න ඔිනි. ඒක decode කරල තමා අදාල user ව හොයා ගන්නේ. තව විශේෂ token එකක් තියනවා ඒ තමා refresh_token කියන එක, ඒක භාවිතා කරන්නේ new id_token එකක් retrieve එකගන්න මොකද id_token එක valid වෙන්නේ 1hr විතරයි. ඊට පස්සේ expire වෙලා යනවා. අපි refresh_token එක use කරල අලුත් id_token එකක් අරන් දෙන්න ඔිනි වෙනවා userට එතකොට. එහෙම කරල තියෙන්නෙ security එකට මොකද id_tokens වෙන කා අතට හරි ගියොත්(මොකද ඒක හැම තැනම include වෙන නිසා) ඒ ටික වැඩක් නැති වෙනවනෙ කෙටි කාලෙකින. එතකොට game over
මතකද facebook එකේ ඔහොම සිද්ධියක් උනා මෑතකදි. අපිට තව ඔන්නම් පුථවන් හැම token එකක්ම revoke කරල දාන්න මොකක් හරි සිද්ධියක් උනොත්. ඉතින් මේ වගේ ඉතා වැදගත් ගොඩක් හොද features සෙට් එකක් auth එකේ තියනවා, අපි මුකුත් හදන්න දෙයක් නැහැ. SDK එකක් හරි, REST API එක හරි භාවිතා කරලා මේ දෙවල් භාවිතයට ගන්න පුලෝ.
https://firebase.google.com/docs/auth/
Database
- - - - - - - -
databases වර්ග දෙකක් තියනවා.
1. Realtime database
2. Firestore (beta
)මේ දෙකේම තියෙන්නේ NoSQL databases. ඒ කියන්නේ tables නැහැ. SQL භාශාව භාවිතා කරන්න බෑ. උන් හෙන talks දෙනවා NoSQL හොදයි කියලා. ඒත් මන්නම් හිතන්නෑ මේක production level එකේදි ගොඩක්ම use කරනව ඇති කියල. දන්නෑ ඉතින් කරනවනම් මාව කන්නෙපා
මේකෙදි වෙන්නෙ පත json object එකක අපේ data තියා ගන්න එක. normalization අරව මේවා නැහැ. මන් intro එකක් දෙන නිසා වැඩිය විස්තර නොකර ඊලග එක වෙන Firestore එකට යන්නම්. මේක කිව්වොත් realtime එකේ improvement එකක් විදිහයට තමා එයාල කියන්නේ. මේකෙ තියනෝ collections, documents, fields කියලා මෙව්ව 3ක්. users කියන්නේ collection එකක් නම් documents වලට එන්නේ users ලගෙ primary keys සෙට් එක. fields නම් දන්නවනනේ, නම, අරව මේව.
ඉතින් කියපන් මේකෙන් ඇති වැඩේ
මන් දැකපු පුධානම usage එක තමා දැන් හිතමු අපිට තියා ගන්න ඔිනි කියලා user කෙනෙක් දාපු posts 10 ක්. එකකොට එක post එකක් කියන්නේ collection එකක් නම්, අපිට පුළුවන් user ලගෙ field එකක් හදන්න posted_posts[] වගේ එකක්. එකෙ hold කරගෙන ඉන්නවා reference documents කිහිපයක් posts collection එකට අදාලව. අපි sdk එකක් use කරල user ගෙ fields ටික ගත්තොත් ලස්සනට අර මන් කියපු posted_posts array එක තියනවා. අපිට පුථවන් ඒක දිගේ ගිහින් posts වල details ගන්න. මේක කරලම බලපන් එතකොට තේරෙයි.
මේකෙදි වෙන්නෙ පත json object එකක අපේ data තියා ගන්න එක. normalization අරව මේවා නැහැ. මන් intro එකක් දෙන නිසා වැඩිය විස්තර නොකර ඊලග එක වෙන Firestore එකට යන්නම්. මේක කිව්වොත් realtime එකේ improvement එකක් විදිහයට තමා එයාල කියන්නේ. මේකෙ තියනෝ collections, documents, fields කියලා මෙව්ව 3ක්. users කියන්නේ collection එකක් නම් documents වලට එන්නේ users ලගෙ primary keys සෙට් එක. fields නම් දන්නවනනේ, නම, අරව මේව.ඉතින් කියපන් මේකෙන් ඇති වැඩේ

මන් දැකපු පුධානම usage එක තමා දැන් හිතමු අපිට තියා ගන්න ඔිනි කියලා user කෙනෙක් දාපු posts 10 ක්. එකකොට එක post එකක් කියන්නේ collection එකක් නම්, අපිට පුළුවන් user ලගෙ field එකක් හදන්න posted_posts[] වගේ එකක්. එකෙ hold කරගෙන ඉන්නවා reference documents කිහිපයක් posts collection එකට අදාලව. අපි sdk එකක් use කරල user ගෙ fields ටික ගත්තොත් ලස්සනට අර මන් කියපු posted_posts array එක තියනවා. අපිට පුථවන් ඒක දිගේ ගිහින් posts වල details ගන්න. මේක කරලම බලපන් එතකොට තේරෙයි.
https://firebase.google.com/docs/firestore/
ඉතින් intro එක මෙතැනින් නවත්න්නම්. උඹලටත් මොනා හරි තියනවනම් හදන්න පොඩි පොඩි ජිල්බිරික්ස් Firebase ලගෙ features use කරල බල්නන. මන් නොකියපු දේවලුත් ගොඩක් තියනවා. තව සවිස්තරව කරන්නම් ඔිනිනම්. උඹලට docs බැලුවම තේරෙන් නැත්තං කියපල්ලා.
Firebase Admin python SDK :
http://github.com/firebase/firebase-admin-python
එකෙ docs :
https://firebase.google.com/docs/reference/admin/python
අනිත් අයටත් බලන්න BUMP එකක් දාපල්ලා, කිරියටමයි ලිව්වේ. රෙපුත් දෙනෝනම් දියන් ඉතින් මාත් ඵුතජ්ජන මනුස්සේක්නේ.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
මන් දාපු වෙනත් එව්ව:
http://www.elakiri.com/forum/showthread.php?t=1828027
http://www.elakiri.com/forum/showthread.php?t=1873152
http://www.elakiri.com/forum/showthread.php?t=1808136
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
