Original Thread
ඉතින් එකේ මම දුන්න උත්තර ටික මේකේ දාන්න හිතුනා. සැහෙන කුකුලෝ ටිකක් අහලා තිබ්බ නිසා. මේවා 100% හරි දේවල් නෙමේ. මොකද ඒ වෙලේ ඉන්න සිටුවේෂන් එක එක්ක මෙලෝ ලබ්බක් ඔලුවට එන්නේ නැ . උබලා බලල දෙයක් තියේ නම් ගනිල්ලා. වැරදි දෙයක් තියේ නම් හදපල්ලා.
1. වින්ඩෝස් ෆෝල්ඩර් විව් එක නැත්නම් එක්ස්පොල්රර් එක කියන්නේ සරල ට්රි විව් එකක් නේ. ඉතින් එක නේ ඔය එක්ස්ප්ලේන් කරන්න කියන්නේ . ඕකට තනි ක්ලාස් එකක් හොදටම ඇති මම කියන්නේ.
class name: node
හරි දැන් ට්රි එකේ එක නොඩ් එකක් ගත්තම එකේ තියෙන්න ඕනේ මෙන්න මේවා නේ.
1. එකේ details ටික (එකේ නම, වගේ ඒවා )
2. එක පෙරන්ට් එකක්ද?
3. එකේ පෙරන්ට් නොඩ් එක මොකක්ද?
4. එකේ චයිල්ඩ් නොඩ් ලිස්ට් ඒක
5. ෆෝල්ඩර් එකක්ද? ෆයිල් එකක්ද?
දැන් තියෙන්නේ ඔය ක්ලාස් එකේ ඔබ්ජෙක්ට් වලින් යන ගේමක්. ඔය ටික කියාගත්තා නම් ඊට වඩා ඕනෙම එකෙක් අහන්නේ නැ
2. මේ වගේ ප්රශ්නයක් ඇහුවාම මුලින්ම කරන්න ඕනේ මොන අර්චිටෙක්චර් එකටද යන්නේ කියල හොයන එක. යුසර් ලා ගැන වැඩි කියන්නේ මේකේ මේ සිස්ටම් එකට එන රික්වෙස්ට් ගාන වැඩි කියන එක. ඒ කියන්නේ බෙසිකලි ඩේටා බේස් රීඩ් එක තදට යන්න ඕනේ කියන එක. මොකද අපි සිංගල් සයින් ඕන එකකින් ඔතොන්ටිකෙට් කරලා දෙන එකේ ඔතොරයිස් පාට එක යන්නේ අපේ ඩේටා බේස් එකකින් නේ (වැඩි විස්තර ඕනේ නම් කියන්න දෙන්නම්)
මේකෙදි Clean Architecture nathnam DDD කෙලින්ම අයින් කරන්න වෙනවා. මොකද එක බිස්නස් ෆෝකස් එකක් නිසා. දැන් තියෙන්නේ SOA , microservices. දැන් SOA , microservices දෙකෙන් මොකක්ද? SOA එකේදී API එකක් හෝ බැක් එන්ඩ් එක මුළු සිස්ටම් එකටම එකයි. එක ඇත්තටම ගෙනාවේ නෙට්වර්ක් ලේයර් ඩී-කපල් කරන්න. අනික් පැත්තට මම ඔය යුසර් ලාගේ කතාව වෙනම සර්විස් එකකට දුන්නා නම් මගේ සිස්ටම් එකේ අනික් ටිකට එකෙන් බරක් එන්නේ නැනේ. එහෙනම් තේරීම microservices.
ඉතින් මම තොරගනන්ව microservices architecture එක. ඊට පස්සේ මම සිස්ටම් එක functional වයිස් තමා කඩන්නේ. මොකද බිස්නස් ඩොමේන් එකෙන් කැඩුවොත් මට අර යුසර් සර්විස් එක කපල් කරන්න වෙනවා අනික් මයික්රෝ සර්විස් එක්ක. මට එක කරන්න ඕනේ නැ. ඊට පස්සේ මම SSO එකක් විදිහට OAuth 2.0 ප්රෝටෝකොල් එකෙන් යන OKTA සර්විස් ප්රොවයිඩර් පාවිච්චි කරනවා. සයින් උනාම මම ඉන්ටනලි තම authorize කරන්නේ. එකේදී මම Denormaliz කල ඩේටා බේස් එකක් පවිච්චි කරනවා. එකෙන් read එක ස්පීඩ් වෙනවා . එක තමා ඇත්තටම මේකේ ෆෝකස් එක.
මම මේ සර්විස් එක සහ අනින් ඒවා අතර කමියුනිකේෂන් එක තියාගන්නේ Messaging Integration මෙතඩ් එකට. මොකද මට ඕනේ යුසර් ඔතොන්ටිකෙට් කලාද කියන flag එක සහ උගේ පර්මිෂන් ලිස්ට් එක විතරයි රියල් time දෙන්න. එකට විතරක් කපල් කරපු එන්ඩ් පොයින්ට් එකක් දෙනවා. ඉතුරු දෙටෙල් ගන්න ඕනේ නම් Messaging Integration හෝ Streaming Integration එකක් විදිහට මම ඉම්ප්ලිමන්ට් කරනවා. මොකද ඒවා අනික් සර්විස් වලට රියල් ටයිම් කම්පල්සරි නැති නිසා.
ඊලග එක 1 මිලියන් කොන්කරන්ට් එක. ඕක asp.net core ප්රශ්නයක් නෙමේ. රික්වෙස්ට් හැන්දල් කරන්නේ වෙබ් සර්වර් එකෙන්. එකට out of the box හැඩල් කරන්න පුළුවන් මැක්ස් ගානක් තියනවා. එක පහු කරාම ඔටෝමටිකලි කිව් වෙනවා වෙබ් සර්වර් එකේ. සොර්ට් ඔෆ් ලයික් අ පුල්. එන්න ඒක හැදෙන්න නොදී ඉන්නයි ඕනේ. asp.net core හෝ ඕනෙම end point ටෙක්නොල්ගි එකක් ඔය වගේ එකකට හදපුවා නෙමේ. එක හදලා තියෙන්නේ එන රික්වෙස්ට් එකට රෙස්පොන්ඩ් කරන්න. එතන බෝටල්නෙක් එකක් හිටියනවා නම් ඌ එක කිව් කරනවා. අන්තිමේදී මේ ඔක්කොම ෆෝකස් කරන්න එන රික්වෙස්ට් එකට කොම හරි රෙස්පොන්ඩ් කරන්න. එක හරියන වැඩක් නෙමේ කිව් එකක් ඉන්නවා නම් යුසර් අරහේ බලන් ඉන්නවා. ඔන්න ඕකට උත්තර දෙන එක තමා මේකෙන් මු අහන්නේ
මෙතැනදී කරන්න පුලුවන්ව් වැඩ ගොඩක් තියනවා. එකෙනුත් කරන්නම ඕනේ දේ අපේ අප්ප්ලිකේෂන් එක ස්කෙල් කරන එක. අන්න එකෙන් විතරයි අර තැන් දෙකේදීම එන කිව් එක නැති කරගන්න පුළුවන්. ඕකට ලෝකේ ක්රම දෙකක් තියනවා
1. Horizontal Scaling
2. Vertical Scaling
Vertical Scaling කියන්නේ 1 මිලියන් අදින්න පුළුවන් තඩි VM එකක් ගහන එකට. එකේ කෝස්ට් එක වැඩි. එක හොද වැඩක් නෙමේ. අන්න එක නිසා තමා Horizontal Scaling එන්නේ. එකෙනුත් elastic ගතිය ඕනේ. ඒ කියන්නේ යුසර් ලා අඩු වෙනකොට scale dawn කරන්න සහ හිට් එක වැඩි වෙනකොට scale up කරන්න. ඉතින් මම කිව්වා මම කන්ටේනර් පාවිච්චි කරනවා කියල. එක ගැන වැඩි විස්තර කියන්න ගියේ නැත. (Kubernetes Horizontal Pod Autoscaling ) මෙන්න මේකෙන් වෙන්නේ ඔය වැඩේ.
ෆ්රන්ට් එක විදිහට අන්ගියුලර් හෝ රියැකට් තමා ගණන්ව කිව්වේ. සිකියුරිටි විදිහට කිව්වේ මේවා
1. cross-site scripting (XSS) - මේ කියන්නේ ඔය HTML එකට කෝඩ් ඉන්ජෙක්ට් කරන එක නේ. එකට සනිටයිසර් එකක් පාවිච්චි කරන්නව. angular වල නම් මේක ඇතුලෙම තියනවා. value එකක් ඉන්සර්ට් වෙනකොට DOM එකට, ඇතුලේ තියන sanitizes එක වැඩ කරලා අර කෝඩ් කල්ල රිමු කරනවා.
2. Cross-site request forgery - මේක HttpClient මොඩියුල් එකෙන් ඔටෝ හැන්දල් වෙනවා.
ඔය දෙක තමා කිව්වේ.
ටෙස්ටින් විදිහට යුනිට් ටෙස්ටින් කරනවා කියල කිව්වා. ටෙස්ට් ඔටෝමේෂන් ගැන ඇහුව. එකේදී අහපු ටිකට උත්තර දුන්නා. සාම්පල එකක්ව් ඉදිහට google ලොගින් එක සෙලේනියම් වලින් ඔටෝමෙට් කරන විදිහ කිව්වා
3. මේ ප්රශ්නේ ටිකක් ට්රිකි. මම හුගක් දේවල් වලට උඩින් උත්තර දීලා තියනවා. මේක ඇහුවේ මගේ ඉන් දෙපත් නොලේජ් එක බලන්න කියල මට හොදටම තේරුනා.
මේ වගේ බිග් ඩේටා එක්ක වැඩ කරද්දී database sharding තමා එක පාරම මතක් උනේ. මේක Denomalize කන්සෙප්ට් එක එක්ක දාද්දි වැඩේ ලස්සනට වෙනවා.(කාට හරි ඕනේ නම් මේ ටෙක්නික් ඉන් ඩිටෙල් අහන්න කියල දෙන්නම්). මේක මම හිතුවේ මට නෙගටිව් පොයින්ට් එකක් වෙයි කියල. මොකද sharding එක්ක Denomalize දානවා කියන්නේ සැහෙන සාදක තියනවා බලන්න ඕනේ. නැත්නම් data redundancy එකට කෙලවෙනවා. එත් මම ඒ එක එක්ක ගියා.
මේකෙදි මම කිව්ව අනික් එක තම OLTP සහ OLAP කියන කන්සෙප්ට් දෙක. OLAP කන්චෙප්ට් එක Denomalize එක එක්ක තදින් බැදෙනවා. එකේ අරමුණ ඩේටා රිට්රිවල් ෆාස්ට් කරන එක. ඉතින් මම ඔය කන්සෙප්ට් තුන කියල විස්තර කළා අන්තිමට කොහොමද සිස්ටම් එකේ මුලිකව අවශ්ය වෙන දේවල් ටික පිරෙන්නේ කියන එක.
එතැනදී පොර තව ප්රශ්න සැහෙන්න ඇහුව. මම ඒවටත් උත්තර දුන්නා ඉතින්. මිනිහෙක්ට හැම දේම බැනේ බන්. මම ඉතින් බැරි දේට බැ හෝ මම මේක කරලා නැ කිව්වා මිට කලින්.
මේක මම ඇත්තටම දැම්මේ මේකෙන් දෙයක් අරගෙන මට වඩා 100 ගුණයක් හොදට වැඩේ කරගන්න. අනිවා ප්රැක්ටිකල් තියෙන්නම ඕනේ. හුගක් දේවල් වලට උත්තර දුන්නේ ප්රැක්ටිකල් දේවල් වලින්. ජොබ් ඉන්ටවිව් එක සෙට් කරගත්ත විදිහත් දාන්නම් අද හෝ හෙට. හැම එකාටම මේ කාලකන්නි රටෙන් යන්න ලැබේවා කියන එක තමා අවසාන ප්රාර්ථනාව
ඉතින් එකේ මම දුන්න උත්තර ටික මේකේ දාන්න හිතුනා. සැහෙන කුකුලෝ ටිකක් අහලා තිබ්බ නිසා. මේවා 100% හරි දේවල් නෙමේ. මොකද ඒ වෙලේ ඉන්න සිටුවේෂන් එක එක්ක මෙලෝ ලබ්බක් ඔලුවට එන්නේ නැ . උබලා බලල දෙයක් තියේ නම් ගනිල්ලා. වැරදි දෙයක් තියේ නම් හදපල්ලා.
1. වින්ඩෝස් වල ෆෝල්ඩර් ට්රි එක වගේ එකක් ඩිසයින් කරන ක්රමේ ඔබ්ජෙක්ට් ඔරියන්ටඩ් විදිහට කලොත් C# වලින් එක්ස්ප්ලේන් කරන්න කිව්වා.
2. 10 මිලියන් යුසර් ලා ඉන්න 1 මිලියන් කොන්කරන්ට් CPQ සිස්ටම් එකක් මුල ඉදලා හදන විදිහ කියන්න කිව්වා. අප්රෝච් එකට මුල් තැන දෙන්න කිව්ව්ව. සිකියුරිටි , අර්කිටෙක්චර් සහ ටෙස්ටින් තමා මුලික කිව්වා.
3. උඩ එකේ ඩේටා බේස් එක ඩිසයින් කරනකොට බලන්න ඕනේ දේවල් ඇහුවා
1. වින්ඩෝස් ෆෝල්ඩර් විව් එක නැත්නම් එක්ස්පොල්රර් එක කියන්නේ සරල ට්රි විව් එකක් නේ. ඉතින් එක නේ ඔය එක්ස්ප්ලේන් කරන්න කියන්නේ . ඕකට තනි ක්ලාස් එකක් හොදටම ඇති මම කියන්නේ.
class name: node
හරි දැන් ට්රි එකේ එක නොඩ් එකක් ගත්තම එකේ තියෙන්න ඕනේ මෙන්න මේවා නේ.
1. එකේ details ටික (එකේ නම, වගේ ඒවා )
2. එක පෙරන්ට් එකක්ද?
3. එකේ පෙරන්ට් නොඩ් එක මොකක්ද?
4. එකේ චයිල්ඩ් නොඩ් ලිස්ට් ඒක
5. ෆෝල්ඩර් එකක්ද? ෆයිල් එකක්ද?
දැන් තියෙන්නේ ඔය ක්ලාස් එකේ ඔබ්ජෙක්ට් වලින් යන ගේමක්. ඔය ටික කියාගත්තා නම් ඊට වඩා ඕනෙම එකෙක් අහන්නේ නැ
2. මේ වගේ ප්රශ්නයක් ඇහුවාම මුලින්ම කරන්න ඕනේ මොන අර්චිටෙක්චර් එකටද යන්නේ කියල හොයන එක. යුසර් ලා ගැන වැඩි කියන්නේ මේකේ මේ සිස්ටම් එකට එන රික්වෙස්ට් ගාන වැඩි කියන එක. ඒ කියන්නේ බෙසිකලි ඩේටා බේස් රීඩ් එක තදට යන්න ඕනේ කියන එක. මොකද අපි සිංගල් සයින් ඕන එකකින් ඔතොන්ටිකෙට් කරලා දෙන එකේ ඔතොරයිස් පාට එක යන්නේ අපේ ඩේටා බේස් එකකින් නේ (වැඩි විස්තර ඕනේ නම් කියන්න දෙන්නම්)
මේකෙදි Clean Architecture nathnam DDD කෙලින්ම අයින් කරන්න වෙනවා. මොකද එක බිස්නස් ෆෝකස් එකක් නිසා. දැන් තියෙන්නේ SOA , microservices. දැන් SOA , microservices දෙකෙන් මොකක්ද? SOA එකේදී API එකක් හෝ බැක් එන්ඩ් එක මුළු සිස්ටම් එකටම එකයි. එක ඇත්තටම ගෙනාවේ නෙට්වර්ක් ලේයර් ඩී-කපල් කරන්න. අනික් පැත්තට මම ඔය යුසර් ලාගේ කතාව වෙනම සර්විස් එකකට දුන්නා නම් මගේ සිස්ටම් එකේ අනික් ටිකට එකෙන් බරක් එන්නේ නැනේ. එහෙනම් තේරීම microservices.
ඉතින් මම තොරගනන්ව microservices architecture එක. ඊට පස්සේ මම සිස්ටම් එක functional වයිස් තමා කඩන්නේ. මොකද බිස්නස් ඩොමේන් එකෙන් කැඩුවොත් මට අර යුසර් සර්විස් එක කපල් කරන්න වෙනවා අනික් මයික්රෝ සර්විස් එක්ක. මට එක කරන්න ඕනේ නැ. ඊට පස්සේ මම SSO එකක් විදිහට OAuth 2.0 ප්රෝටෝකොල් එකෙන් යන OKTA සර්විස් ප්රොවයිඩර් පාවිච්චි කරනවා. සයින් උනාම මම ඉන්ටනලි තම authorize කරන්නේ. එකේදී මම Denormaliz කල ඩේටා බේස් එකක් පවිච්චි කරනවා. එකෙන් read එක ස්පීඩ් වෙනවා . එක තමා ඇත්තටම මේකේ ෆෝකස් එක.
මම මේ සර්විස් එක සහ අනින් ඒවා අතර කමියුනිකේෂන් එක තියාගන්නේ Messaging Integration මෙතඩ් එකට. මොකද මට ඕනේ යුසර් ඔතොන්ටිකෙට් කලාද කියන flag එක සහ උගේ පර්මිෂන් ලිස්ට් එක විතරයි රියල් time දෙන්න. එකට විතරක් කපල් කරපු එන්ඩ් පොයින්ට් එකක් දෙනවා. ඉතුරු දෙටෙල් ගන්න ඕනේ නම් Messaging Integration හෝ Streaming Integration එකක් විදිහට මම ඉම්ප්ලිමන්ට් කරනවා. මොකද ඒවා අනික් සර්විස් වලට රියල් ටයිම් කම්පල්සරි නැති නිසා.
ඊලග එක 1 මිලියන් කොන්කරන්ට් එක. ඕක asp.net core ප්රශ්නයක් නෙමේ. රික්වෙස්ට් හැන්දල් කරන්නේ වෙබ් සර්වර් එකෙන්. එකට out of the box හැඩල් කරන්න පුළුවන් මැක්ස් ගානක් තියනවා. එක පහු කරාම ඔටෝමටිකලි කිව් වෙනවා වෙබ් සර්වර් එකේ. සොර්ට් ඔෆ් ලයික් අ පුල්. එන්න ඒක හැදෙන්න නොදී ඉන්නයි ඕනේ. asp.net core හෝ ඕනෙම end point ටෙක්නොල්ගි එකක් ඔය වගේ එකකට හදපුවා නෙමේ. එක හදලා තියෙන්නේ එන රික්වෙස්ට් එකට රෙස්පොන්ඩ් කරන්න. එතන බෝටල්නෙක් එකක් හිටියනවා නම් ඌ එක කිව් කරනවා. අන්තිමේදී මේ ඔක්කොම ෆෝකස් කරන්න එන රික්වෙස්ට් එකට කොම හරි රෙස්පොන්ඩ් කරන්න. එක හරියන වැඩක් නෙමේ කිව් එකක් ඉන්නවා නම් යුසර් අරහේ බලන් ඉන්නවා. ඔන්න ඕකට උත්තර දෙන එක තමා මේකෙන් මු අහන්නේ
මෙතැනදී කරන්න පුලුවන්ව් වැඩ ගොඩක් තියනවා. එකෙනුත් කරන්නම ඕනේ දේ අපේ අප්ප්ලිකේෂන් එක ස්කෙල් කරන එක. අන්න එකෙන් විතරයි අර තැන් දෙකේදීම එන කිව් එක නැති කරගන්න පුළුවන්. ඕකට ලෝකේ ක්රම දෙකක් තියනවා
1. Horizontal Scaling
2. Vertical Scaling
Vertical Scaling කියන්නේ 1 මිලියන් අදින්න පුළුවන් තඩි VM එකක් ගහන එකට. එකේ කෝස්ට් එක වැඩි. එක හොද වැඩක් නෙමේ. අන්න එක නිසා තමා Horizontal Scaling එන්නේ. එකෙනුත් elastic ගතිය ඕනේ. ඒ කියන්නේ යුසර් ලා අඩු වෙනකොට scale dawn කරන්න සහ හිට් එක වැඩි වෙනකොට scale up කරන්න. ඉතින් මම කිව්වා මම කන්ටේනර් පාවිච්චි කරනවා කියල. එක ගැන වැඩි විස්තර කියන්න ගියේ නැත. (Kubernetes Horizontal Pod Autoscaling ) මෙන්න මේකෙන් වෙන්නේ ඔය වැඩේ.
ෆ්රන්ට් එක විදිහට අන්ගියුලර් හෝ රියැකට් තමා ගණන්ව කිව්වේ. සිකියුරිටි විදිහට කිව්වේ මේවා
1. cross-site scripting (XSS) - මේ කියන්නේ ඔය HTML එකට කෝඩ් ඉන්ජෙක්ට් කරන එක නේ. එකට සනිටයිසර් එකක් පාවිච්චි කරන්නව. angular වල නම් මේක ඇතුලෙම තියනවා. value එකක් ඉන්සර්ට් වෙනකොට DOM එකට, ඇතුලේ තියන sanitizes එක වැඩ කරලා අර කෝඩ් කල්ල රිමු කරනවා.
2. Cross-site request forgery - මේක HttpClient මොඩියුල් එකෙන් ඔටෝ හැන්දල් වෙනවා.
ඔය දෙක තමා කිව්වේ.
ටෙස්ටින් විදිහට යුනිට් ටෙස්ටින් කරනවා කියල කිව්වා. ටෙස්ට් ඔටෝමේෂන් ගැන ඇහුව. එකේදී අහපු ටිකට උත්තර දුන්නා. සාම්පල එකක්ව් ඉදිහට google ලොගින් එක සෙලේනියම් වලින් ඔටෝමෙට් කරන විදිහ කිව්වා
3. මේ ප්රශ්නේ ටිකක් ට්රිකි. මම හුගක් දේවල් වලට උඩින් උත්තර දීලා තියනවා. මේක ඇහුවේ මගේ ඉන් දෙපත් නොලේජ් එක බලන්න කියල මට හොදටම තේරුනා.
මේ වගේ බිග් ඩේටා එක්ක වැඩ කරද්දී database sharding තමා එක පාරම මතක් උනේ. මේක Denomalize කන්සෙප්ට් එක එක්ක දාද්දි වැඩේ ලස්සනට වෙනවා.(කාට හරි ඕනේ නම් මේ ටෙක්නික් ඉන් ඩිටෙල් අහන්න කියල දෙන්නම්). මේක මම හිතුවේ මට නෙගටිව් පොයින්ට් එකක් වෙයි කියල. මොකද sharding එක්ක Denomalize දානවා කියන්නේ සැහෙන සාදක තියනවා බලන්න ඕනේ. නැත්නම් data redundancy එකට කෙලවෙනවා. එත් මම ඒ එක එක්ක ගියා.
මේකෙදි මම කිව්ව අනික් එක තම OLTP සහ OLAP කියන කන්සෙප්ට් දෙක. OLAP කන්චෙප්ට් එක Denomalize එක එක්ක තදින් බැදෙනවා. එකේ අරමුණ ඩේටා රිට්රිවල් ෆාස්ට් කරන එක. ඉතින් මම ඔය කන්සෙප්ට් තුන කියල විස්තර කළා අන්තිමට කොහොමද සිස්ටම් එකේ මුලිකව අවශ්ය වෙන දේවල් ටික පිරෙන්නේ කියන එක.
එතැනදී පොර තව ප්රශ්න සැහෙන්න ඇහුව. මම ඒවටත් උත්තර දුන්නා ඉතින්. මිනිහෙක්ට හැම දේම බැනේ බන්. මම ඉතින් බැරි දේට බැ හෝ මම මේක කරලා නැ කිව්වා මිට කලින්.
මේක මම ඇත්තටම දැම්මේ මේකෙන් දෙයක් අරගෙන මට වඩා 100 ගුණයක් හොදට වැඩේ කරගන්න. අනිවා ප්රැක්ටිකල් තියෙන්නම ඕනේ. හුගක් දේවල් වලට උත්තර දුන්නේ ප්රැක්ටිකල් දේවල් වලින්. ජොබ් ඉන්ටවිව් එක සෙට් කරගත්ත විදිහත් දාන්නම් අද හෝ හෙට. හැම එකාටම මේ කාලකන්නි රටෙන් යන්න ලැබේවා කියන එක තමා අවසාන ප්රාර්ථනාව
ela. ubata oka set vei oop valin oka explain karanna puluwan ekama krame node thamai. uba double linked list ekakda explain kare?
