Friday, October 26, 2018

Serverless Computing With AWS Lambda- Part 2


අද අප තවදුරටත් බලමු AWS Lambda පිළිබදව සහ serverless computing පිළිබදව.....

AWS Lambda කියලා කියන්නේ  Amazon වලින් implement කරලා තියෙන serverless computing platform එකක්...  EC2 සහ S3 කියන්නේ ඒ වගේ implement කරලා තියෙන serverless computing platform. AWS Lambda වලින් ඔයාලගේ code එක encrypts කරලා S3 වල ගබඩා කරනවා.ඔයාලා function එකක්  run කරන්න request කලාම, runtime specifications පාවිච්චි කරලා "container" හදනවා. ඉන් පසුව EC2  වල instance එකක එම container deploy කරලා, function එක execute කරනවා....

පහතින් පෙන්වා දෙන්නේ AWS Lambda execute වන process එක.....


(චායාරූප අන්තර්ජාලය ඇසුරිනි)

ඔයාලා Lambda function එකක් create කලාට පසු  runtime environment එක, කොච්චර memory ප්‍රමාණයක් ඕන වෙනවද,  execute කරන method එක වගේ ඒවා  AWS Lambda වල configure කරන්න ඕන වෙනවා.  ඉන් පසුව AWS Lambda මගින් ඔයාලගේ configuration එක container එකක setup කරලා, එම container එක EC2 instance එකක deploy කරනවා.... ඊට පස්සේ ඔයාලා කියපු method එක අනුව execute කිරීම සිදු වෙනවා...


Lambda functions හදන්න මෑතකදී ඉදන් පාවිච්චි කරන්නේ Node, Java, Python කියන languages තමයි... අපි මේ article  එකේදී කතා කරන්නේ java වලින් ලියන්නේ AWS Lambda function කොහොමද කියලා....  AWS Lambda වල run කරන්න code එකක් ලියනකොට අපි ඒක හදුන්වනවා function එකක් කියලා.

AWS Lambda functions in Java

ඔයාලට Lambda functions implement කරන්න පුලුවන් ආකාර 2ක් තියෙනවා.

1. client විසින් ලබා දෙන input stream එක අනුව client වෙත output stream එක ලබා දෙන ආකාරයේ function implement කරන්න පුලුවන්.

2.මෙහිදී predefined interface පාවිච්චි කරන්න පුලුවන්. මේකෙදී වෙන්නේ client විසින් ලබා දෙන input stream එක object එකක් බවට convert වෙලා අදාල function එකට pass කරනවා. ඊට පස්සේ එම function එක execute වෙලා output එක client වෙත ලබා  දෙනවා.

මම දෙවනුව කියපු ක්‍රමය තමා functions implement කරන කොට ගොඩක් ලේසී වෙන්නේ...

Java වලින් කරද්දී මුලින්ම පහත තියෙන AWS Lambda core library එක ඔයාලගේ project එකේ include කර ගන්න ඕන වෙනවා.(සටහන:example uses Maven)

public interface RequestHandler<I, O> {
    /**
     * Handles a Lambda function request
     * @param input The Lambda function input
     * @param context The Lambda execution environment context object.
     * @return The Lambda function output
     */
    public O handleRequest(I input, Context context);
}
ඊලගට  interface implement කරන්න ඕන වෙනවා....
public interface RequestHandler<I, O> {
    /**
     * Handles a Lambda function request
     * @param input The Lambda function input
     * @param context The Lambda execution environment context object.
     * @return The Lambda function output
     */
    public O handleRequest(I input, Context context);
}
 මේ interface එක RequestHandler. එකේ define කරලා තියෙන්නේ එක method එකයි:handleRequest().. මේකෙන් input object එකක් සහ Context object එකක් input stream විදියට pass කරනවා.. ඒ වගේම output එක විදියට object එකක් return කරනවා.
Context object එකෙන් තමයි ඔයාලගේ function එක ගැන information ලබා දෙන්නේ. ඒ වගේම function එක  run වෙන  environment (function එකේ නම, function එකේ memory limit) එක ගැනත් information ලබා දෙනවා.

උදා: ඔයාල Request class සහ Response class එක define කරලා ඔයාලට පුලුවන් පහත අයුරින් lambda function එක implement කරන්න. 
public class MyHandler implements RequestHandler<Request, Response> {
  public Response handleRequest(Request request, Context context) {
    ...
  }
}

දැන් අපි මේ Lambda function ගැන ටිකක් දන්නවනේ..... ඒ නිසා අපි මේ Lambda function implement කරන එක ගැන තවදුරටත් ඊලග articles වලදී කතා කරමු....


---ඉෂාරා---

0 comments:

Post a Comment