HDE BLOG

コードもサーバも、雲の上

35th Monthly Technical Session (MTS) Report

35th Monthly Technical Session (MTS) was held on June 16th, 2017. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.

f:id:bagus-rahman:20170620180751j:plain

The moderator of the 35th MTS was Shihan-san.

f:id:bagus-rahman:20170620175358j:plain

The first topic was "Introduction of React from Angular User" by Shinohara-san. He had been using Angular most of the time, but his most recent project required him to use React instead. He mentioned that Angular is a framework, while React is a library. Despite this difference, the two are often compared. Shinohara-san compared the two of them with the help of TodoMVC. He also explained some features of React, such as JSX, props, and state.

f:id:bagus-rahman:20170620175623j:plain

The second topic was "Statistics Analysis Framework 'ROOT'" by Kusumoto-san. Root is a data analysis framework developed by CERN. It deals with big data processing, statistical analysis, visualization, and storage.

Kusumoto-san had used ROOT several years ago, for research in university. He explained some of ROOT features, such as visualizing data as histograms and trees. He also demonstrated the various types of histogram that ROOT provides.

f:id:bagus-rahman:20170620175727j:plain

The third topic was "Stylish Python" by Jonas-san. He suggested several ideas about project structure, code style, and best practices.

Regarding project structure, one of Jonas' ideas were putting code under src/ directory. Some benefits of doing this are preventing imports from the root directory and requires developer to have a functioning setup.py to work locally. The latter helps finding packaging bugs and makes using entry points easier.

Regarding code style, Jonas proposed many ideas based on PEP 8. He covered indentation, line length, imports, naming, class method order, literals, type hints, and function definitions.

Regarding best practices, Jonas recommended how to write setup.py, how to define dependencies, using iterators, using enums, and using sentinels. He also recommended using several third-party libraries, such as pytest and attrs.

f:id:bagus-rahman:20170620175859j:plain

The fourth topic was a report of Open Source Summit Japan 2017 by Xudong-san. Open Source Summit Japan is an annual conference event held by The Linux Foundation. This year's event is a combination of LinuxCon, ContainerCon, and CloudOpen. Every day, there were around 10 time slots with 4 concurrent sessions in each time slot. The number of attendees was about 600.

Xudong-san attended sessions about Kubernetes, AArch64 architecture support for servers, container security, non-root containers / user namespace containers, and Red Hat's and Microsoft's product promotion sessions, among others. Attending Open Source Summit Japan 2017 made him realize several things. First is the increasing interest and support of Kubernetes, related to services and products such as Google Cloud Platform, Microsoft Azure, and Red Hat OpenShift. Second is the fact that container security is still a big issue.

f:id:bagus-rahman:20170620180033j:plain

The fifth topic was "Our Culture is Our Brand" by Kenny-san. This topic came from his participation in Customer Experience Management 2017. It was held in Sydney and more than 70 companies were a part of the event. Some of these companies are Google, Microsoft, and Australia Post, among others.

In Kenny-san's opinion, 'culture' is the most important concept out of all the concepts that were frequently discussed in the event. Culture is important in achieving customer success and engagement. Both are important in our effort to become a world-class IT company.

Kenny-san defined culture as things that connect us, things that we share even as we continue to grow. These things are belief, purpose, value, and passion. The more things we share, the stronger our culture is. In a company context, culture helps us to get and keep the best people, helps us to build teamwork and improve performance, gives us competitive advantage, and gives us meaning, passion, and love for our work.

These far-reaching effects of culture led Kenny-san to believe that our culture is our brand. Therefore, we have to develop good culture. It consists of strong belief, clear vision, good value, good environment, and good behavior, among others. Good culture leads to employee engagement. In turn, employee engagement leads to customer success and engagement.

f:id:bagus-rahman:20170620180156j:plain

The sixth topic was "Cloud Gaming" by Kelvin-san. He was one of our Global Internship Program (GIP) participants. He began by introducing the concept of cloud gaming, which follows a client-server model. The client sends user commands, the server does all the processing, and the client receives the resulting video stream.

Kelvin-san described his own cloud gaming setup, which utilizes an Amazon EC2 g2.2xlarge instance and Parsec. According to him, such a setup is quite expensive, as it costs him 80 cents per hour. He also mentioned other commercial cloud gaming solutions, such as PlayStation Now, GeForce NOW, and LiquidSky.

Kelvin-san also explained the pros and cons of cloud gaming. Some of its pros are the fact that it is essentially Gaming as a Service (GaaS), developers don't have to worry about DRM, developers have full control over software and hardware, and customers enjoy high availability and low setup time. Some of its cons are its dependence to internet connection, the fact that it is a single point of failure, zero possibility for consumers to mod games, and consumers don't really own games.

f:id:bagus-rahman:20170620180325j:plain

The seventh topic was "Intro to Apache Spark" by Weiting-san. She was also one of our Global Internship Program participants. Apache Spark is an open-source cluster computing system. It is often utilized as an engine for large-scale data processing. Some benefits of Spark are its speed (100 times faster than Hadoop MapReduce in memory, or 10 times faster on disk), its API (for Java, Scala, Python, and R), its libraries (SQL and DataFrames, Spark Streaming, MLib, and GraphX), and it runs everywhere.

Weiting-san also explained some of the main concepts of Spark. Resilient Distributed Datasets (RDDs) are fault-tolerant collections of elements that can be operated on in parallel. They are read-only and distributed over a cluster of machines. RDDs support two types of operations, which are transformations and actions. Transformations create a new dataset from an existing one. Actions return a value to the driver program after running a computation on the dataset. Working with RDDs generally involves creating an RDD from a data source, applying transformations (e.g. map) to an RDD, and applying actions (e.g. reduce) to an RDD.

f:id:bagus-rahman:20170620180455j:plain

The eighth topic was "Klassify and Kluster: Machine Learning Essentials" by Jay-san. He was also one of our Global Internship Program participants. He explained two problems in machine learning, which are classification and clustering. Classification is the problem of identifying a class to which a new observation belongs. This is done based on a collection of observations whose class membership is known. On the other hand, clustering is the task of grouping a set of objects in such a way that objects in the same cluster are more similar to each other than to those in other clusters.

Jay-san also taught us some learning algorithms to solve those problems. Regarding classification, he explained k-Nearest Neighbors algorithm (k-NN). k-NN classifies an observation based on a majority vote of its neighbors. An observation is assigned to the class most common among its k nearest neighbors. Regarding clustering, he explained k-means clustering algorithm. It aims to partition n observations into k clusters. Each object belongs to the cluster with the nearest mean. He also presented the performance of both learning algorithms on the Iris Flower Data Set.

f:id:bagus-rahman:20170620180632j:plain

As usual, we had a party afterwards :)

f:id:bagus-rahman:20170620174937j:plain

Attending Microsoft Build 2017 in Seattle

Hello, this blog post might be a bit unusual since it is written by 2 persons. We are Iskandar and Ogawa from the cloud product development team. In this occasion, we would like to share our experience attending Microsoft Build 2017.

Microsoft Build is an annual conference held by Microsoft, which is aimed for developers. The venue for this year event is located at Seattle, Washington, and the event runs for 3 days from May 10 to May 12, 2017. From Japan, we joined this event via an organized PTS tour and there were more than 50 participants. This event was also our first time visiting Seattle, so we were excited to take a quick look around the Emerald City!

f:id:freedomofkeima:20170601111115j:plain

続きを読む

34th Monthly Technical Session (MTS) Report

34th Monthly Technical Session (MTS) was held on May 19th, 2017. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.

f:id:bagus-rahman:20170609161151j:plain

The moderator of the 34th MTS was Jeffrey-san.

f:id:bagus-rahman:20170609154717j:plain

The first topic was "Glancing through the Scope" by David-san. He was quite involved in our company's data warehouse project. At one point, he was interested in analyzing the data to get some insights. By creating graphs of various attributes of the data, he discovered interesting insights.

Furthermore, David-san also formulated some essential questions in the process, such as "How do we provide value to our customers?", "How do we measure those values?", and "How are our customers using our services?". He also added that we should use our data effectively in building our product. Hopefully, doing so will allow us to better understand the value we provide to our customers.

f:id:bagus-rahman:20170609155713j:plain

The second topic was "Ever-Evolving Threat Landscape" by Jeff Multz-san from SecureWorks. He has 14 years of experience under his belt, and SecureWorks itself is positioned in the Leaders quadrant of Gartner's 2017 Magic Quadrant for Managed Security Services, Worldwide.

Jeff Multz-san explained SecureWorks' capabilities in solving security issues. SecureWorks provide managed security services, threat intelligence, security & risk consulting, incident response, and cloud security. In other words, SecureWorks helps organizations predict, prevent, detect, and respond to security issues. This is made possible by SecureWorks' intelligence-driven information security solutions.

Jeff Multz-san also taught us about Japan's threat landscape. He named several factors that will potentially cause security issues in Japan, such as payment card industry, MyNumber, and Tokyo 2020.

Jeff Multz-san also shared some of his experiences in solving security issues in various organizations in Japan. He told some really good advices in this part, such as "It's easier to keep attackers out than getting them out later" and "Be diligent; watch your networks 24/7/365".

f:id:bagus-rahman:20170609155757j:plain

The third topic was "Using NFS via AWS Storage Gateway" by Okubo-san. AWS Storage Gateway is a service which connects on-premise software appliance with cloud-based storage. AWS Storage Gateway enables on-premises applications to seamlessly, securely, and transparently use storage in AWS cloud.

Since November 2016, AWS Storage Gateway has provided a file interface to objects in Amazon S3 buckets. This feature, now more commonly known as File Gateway, enables storing and retrieval of Amazon S3 objects through standard file storage protocols, such as NFS. In addition, since February 2017, AWS Storage Gateway has supported running File Gateway virtual machine in Amazon EC2.

Okubo-san had been investigating File Gateway to determine whether he can use it in the project he's working on. File Gateway performs quite well. On the other hand, deploying File Gateway on Amazon EC2 requires the instance size to be at least xlarge. Furthermore, AWS hasn't offered a redundancy solution for File Gateway. Despite these caveats, using File Gateway will indeed reduce cost. In fact, the cost reduction of using File Gateway is proportional to the storage size. Because of this advantage, Okubo-san is considering of using File Gateway in the project he's working on.

f:id:bagus-rahman:20170609155828j:plain

The fourth topic was a report of Microsoft Build 2017 by Ogawa-san and Iskandar-san. Ogawa-san explained the highlights of the keynotes. Among the first day keynote topics, he was interested in implementations of Cognitive Services (AI for workplace safety and intelligent meetings) and Azure Cloud Shell and mobile portal. He also took note of other first day announcements, such as Visual Studio for Mac, Azure Database Migration Service, MySQL & PostgreSQL as a service, and many others.

Among the second day keynote topics, he was interested in Windows 10 Fall Creators Update, new apps on the Windows Store, and motion controllers for mixed reality. He also took note of other second day announcements, such as Story Remix, Fluent Design System, and OneDrive Files On-Demand, and many others.

Afterwards, Iskandar-san continued by introducing us to Azure services. Cognitive Services is a collection of APIs, SDKs, and services with which developers can easily add intelligent features into their applications. Bot Framework is a platform for building, connecting, testing, and deploying bots. In combination, Cognitive Services (such as LUIS) and Bot Framework can be utilized to develop an intelligent bot.

Iskandar-san also shared what he learned about IoT. Azure is providing IoT-related services such as IoT Edge, IoT Hub, Azure Stream Analytics. By attending Microsoft Build 2017, he was able to learn various use cases of these services. He also taught us about other important IoT concepts, such as IoT device lifecycle and IoT security.

f:id:bagus-rahman:20170609155909j:plain

The fifth topic was "Struggling with MongoDB" by Takahashi-san. MongoDB is used in the project he's working on, for its performance, scalability, and flexibility. However, some performance issues were discovered, such as ones that are related to concurrency control.

All of this resulted in Takahashi-san searching for alternatives to MongoDB. He had investigated Google BigQuery, Amazon Elasticsearch Service, Amazon CloudSearch, and Amazon Athena, among others.

Interestingly, MongoDB had worthwhile improvements of its own. Acquiring WiredTiger allowed MongoDB to offer features such as document-level concurrency, data/index compression, and memory management. Therefore, Takahashi-san decided to stick with MongoDB and utilize those features.

f:id:bagus-rahman:20170609155943j:plain

The sixth topic was "JWT vs Goa" by Tanabe-san. This topic is a continuation of Shihan-san's from the 32nd MTS, about utilizing Goa for APIs of HDE service that they are both working on. As Tanabe-san put it, Shihan-san's topic left some homework. One of those homework was API authentication, especially using JSON Web Token (JWT).

JWT is an open standard of securely transmitting information between parties as a JSON object. Goa provides a security middleware for JWT. Unfortunately, it lacked some features that Tanabe-san needed, such as support for PS256 algorithm, support for service-to-service token without expiration, and support for role-based access control. Therefore, he decided to integrate his existing security middleware for JWT into Goa. He demonstrated the integration process and listed several issues that he would like to solve in the future.

f:id:bagus-rahman:20170609160009j:plain

As usual, we had a party afterwards :)

33rd Monthly Technical Session (MTS) Report

33rd Monthly Technical Session (MTS) was held on April 14th, 2017. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.

f:id:bagus-rahman:20170421122053j:plain

The moderator of the 33rd MTS was Michael-san.

f:id:bagus-rahman:20170421122435j:plain

The first topic was "AWS Service Update Summary 2017 Q1 (January - March)" by Mitsuharu Hamba-san from AWS. Recently, 5 new AWS services were introduced.

AWS Batch enables users to run batch computing jobs on AWS. AWS Batch provisions resources based on the requirement of batch jobs. Users don't need to do provisioning tasks, such as managing servers or installing batch computing software, by themselves.

Amazon Cloud Directory is a directory store in AWS. Unlike traditional directory solutions, Amazon Cloud Directory allows users to create directories with hierarchies that span multiple dimensions. However, Amazon Cloud Directory is not a directory service for IT administrators who want to manage or migrate their directory infrastructure. Amazon Cloud Directory is a directory store first and foremost, and it is not designed to support some features their directory does, such as authentication and policy frameworks.

Amazon Chime is a communications service. Amazon Chime supports online meeting, video conference, call, chat, and content sharing, both inside and outside an organization. Amazon Chime is secure and works seamlessly across Android, iOS, Mac, and Windows devices.

AWS Organizations enables policy-based management for multiple AWS accounts. Furthermore, with AWS Organizations, users can control access to AWS services, automate AWS account creation and management, and consolidate billing across multiple AWS accounts.

Amazon Connect is a self-service, cloud-based contact center service. Amazon Connect is based on the same contact center technology used by Amazon. With Amazon Connect, users can set up a cloud-based contact center in minutes. Amazon Connect also makes it easy for users to design contact flows, manage agents, and track performance metrics.

Besides those new AWS services, Hamba-san also introduced various updates of the existing AWS services. He also invited us to participate in AWS Summit Tokyo 2017.

f:id:bagus-rahman:20170421122512j:plain

The second topic was "Try to Eliminate Toil with CodePipeline" by Doi-san. The book Site Reliability Engineering defines toil as the kind of work tied to running a production service that tends to be manual, repetitive, automatable, tactical, devoid of enduring value, and that scales linearly as a service grows.

Doi-san feels that there's a toil in the deployment process of the project he's working on. He needs to check every change in the infrastructure that he's about to make. According to Doi-san, this process doesn't have a well-defined procedure, is prone to human error, and wastes time.

AWS CodePipeline is a continuous integration and continuous delivery service with which users can model, visualize, and automate the steps required to release software. Furthermore, AWS CodePipeline also allows users to establish a consistent release process, incorporate AWS services and third-party tools into a pipeline, and others.

Doi-san had been interested in utilizing AWS CodePipeline for quite some time, and finally it was released in Tokyo region. He demonstrated how users can utilize AWS CodePipeline and showed us how the service changed the deployment process of the project he's working on.

f:id:bagus-rahman:20170421122559j:plain

The third topic was "Let's Try Azure" by Kodama-san. In the 32nd MTS, Mami Konishi-san and Drew Robinsons-san from Microsoft introduced Microsoft Azure to us. Afterwards, Kodama-san went ahead and prepared a Microsoft Azure environment for our development team.

Kodama-san explained Microsoft Azure hierarchy. From top to bottom, the hierarchy consists of Directory, Subscription, Resource Group, and Resource. Directory (Azure Active Directory) is where users are registered. Subscription is a billing unit. Resource Group is a container that holds related resources for an Azure solution. Resource is a manageable item that is available through Azure, such as VM, database, etc. The associations between the hierarchy elements are all one-to-many. For example, a Directory can be associated to multiple Subscriptions, but a Subscription must be associated to exactly one Directory. Kodama-san then proposed some rules regarding our Microsoft Azure hierarchy.

Kodama-san introduced some Microsoft Azure services, such as Azure Container Service and Cognitive Services. He then made a sample solution of analyzing logs using various Microsoft Azure services. He also recommended forums where members of our development team can ask questions about Microsoft Azure.

He concluded the session by reminding everyone of Microsoft Build 2017. There may be announcements about Microsoft Azure in the event.

f:id:bagus-rahman:20170421122640j:plain

The fourth topic was "Serverless HTML Form Using Customers Mail Cloud" by Chia-Chun-san. He was our Global Internship Program (GIP) participant. Serverless HTML Form is the application he had been working on during his internship. He implemented with the intentions of learning how to develop an application with serverless architecture, showing the extent of Customers Mail Cloud's capabilities, and identifying the ways Customers Mail Cloud can be integrated with other cloud computing services.

There are several requirements of Serverless HTML Form. First, the application should have a static webpage, with which users will be able to send emails. Second, after a user sends an email, the application should send confirmation emails to the user and their manager. Third, the application should be serverless.

Chia-Chun-san actually implemented two versions of Serverless HTML Form. The first version worked well, but it had problems about email status. Even if an email couldn't be sent (e.g. because of typos in the email address), Serverless HTML Form would still regard the email as being successfully sent. In other words, users couldn't receive the email, and they wouldn't be able to know its status (e.g. is still being sent, failed to be sent, is sent to the wrong address, etc.).

The second version solved this issue by utilizing Customers Mail Cloud's features. The second version's architecture consists of Amazon S3, Amazon API Gateway, AWS Lambda, Amazon DynamoDB, and Customers Mail Cloud. Chia-Chun-san also explained the second version's workflow and message flow. He also shared some important things he had discovered during the second version's implementation. Finally, he demonstrated how to utilize the second version of Serverless HTML Form.

f:id:bagus-rahman:20170421122728j:plain

As usual, we had a party afterwards :)

f:id:bagus-rahman:20170421122804j:plain

Designing APIs with Goa

Like most of the web services in the current software development trends, the service that our team is currently building is also based on the idea of microservice architecture using the Go programming language. Right now we have around 10, in theory, independently deployable services and these services are often communicating with each other using RESTful APIs with over 100 of HTTP endpoints. Also, we have a feeling that these numbers will keep increasing over time.

続きを読む

32nd Monthly Technical Session (MTS) Report

32nd Monthly Technical Session (MTS) was held on March 17th. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.

The moderator of the 32nd MTS was Kevin-san.

f:id:bagus-rahman:20170329182722j:plain

The first topic was 'Microsoft Azure Overview' by Mami Konishi-san and Drew Robinsons-san from Microsoft.

Konishi-san explained the current momentum of Microsoft Azure. These days, 90% of Fortune 500 companies use Microsoft Cloud. Each month, there are 120,000 new Azure customer subscriptions. Furthermore, there are currently 34 available Azure regions, with 4 others coming soon.

f:id:bagus-rahman:20170413151408j:plain

Robinsons-san demonstrated how to utilize Microsoft Azure to create an Ubuntu server. This task can be accomplished in several ways, the first of which is to utilize Azure portal. For people who prefer to work with terminals, Microsoft offers Bash on Windows and Azure CLI 2.0. Using these tools in combination with Azure Resource Manager gets the job done, but Robinsons-san introduced yet another approach. Besides running commands in the CLI, Azure Resource Manager also provides Azure Quickstart Templates, with which deploying Azure resources becomes simpler. There are quite a lot of templates already available on the GitHub repository.

He also explained other Azure services, such as DocumentDB, Azure Container Service, and Service Fabric. DocumentDB is Azure's NoSQL service. By turning on protocol support for MongoDB, DocumentDB databases can even be used as the data store for apps written for MongoDB. Azure Container Service enables deployment and management of container-based applications on Microsoft Azure. Service Fabric is Azure's microservices platform. Robinsons-san mentioned some of its features, namely its support of both stateless and stateful microservices, its tools for Visual Studio, and local cluster.

f:id:bagus-rahman:20170413151427j:plain

The second topic was 'Introduction to Swagger for Amazon API Gateway' by Furukawa-san. Swagger is a framework for designing, building, and documenting RESTful APIs. Swagger consists of the specification (currently known as OpenAPI Specification) and the tools that support it.

Amazon API Gateway allows us to export APIs as Swagger. We can then update the exported API definitions using tools such as Swagger Editor. Finally, we can import the updated API definitions back to API Gateway. By default, imports merge updates to the existing API definitions. However, imports can also be configured to overwrite existing API definitions. In utilizing Swagger for API Gateway, Furukawa-san was concerned about how Swagger supports environment-specific configurations (e.g. AWS account IDs and Lambda function ARNs) and certain aspects of API Gateway (e.g. API keys, usage plans, and custom domains).

f:id:bagus-rahman:20170329182823j:plain

The third topic was 'How to Make a Secure Web Application' by Okubo-san. He had wanted to talk about this because of the change in HDE's business environment and ISMS utilisation. He also mentioned past incidents that happened to other companies, such as YouTube (2010), Sony (2011), and Twitter (2014).

Okubo-san were particularly concerned about several aspects that affected security, which are programming rules, framework, vulnerability-checking tools, and third-party verification. He recommended us to make programming rules based on a certain standard, such as this document by Information Technology Promotion Agency. Because human error happens often, he suggested us to not implement validators individually. Instead, those validators should be included in a framework that everybody uses. Identification of some vulnerabilities can be automated by using tools such as OWASP Zed Attack Proxy Project. Finally, we should also consider doing third-party verification, because it may help us discover vulnerabilities that we didn't realise before.

f:id:bagus-rahman:20170329183312j:plain

The fourth topic was 'Designing APIs in Go' by Shihan-san. The HDE service he's working on consists of 10 microservices with no less than 130 HTTP endpoints. Furthermore, in maintaining the APIs, the team needs to modify handler functions, update the client codes, update the API docs, the list goes on. This led him to Goa, a Framework for building microservices and REST APIs in Go. Goa generates a lot of things automatically; such as boilerplate, glue code, documentation (JSON schema / Swagger), CLI, JavaScript Library, Go Client, and others.

To him, the benefits of utilizing Goa are we can focus on writing codes that matter, Goa generates the boring stuff as idiomatic Go codes, it also helps us completing documentation, and Goa has a friendly community surrounding it. On the other hand, he was still not sure about how to utilize Goa in several aspects of his work, namely things related to JSON Web Tokens (JWT) and role-based access control (RBAC).

f:id:bagus-rahman:20170329183351j:plain

The fifth topic was 'Data Science & Python' by Aji-san. He is one of our Global Internship Program (GIP) participants. In very simple terms, data science is about extracting knowledge from data. This extraction process usually involves data collection, preparation (e.g. cleaning and transformation), and manipulation. Afterwards, we can obtain hypotheses from the data, namely by examining what affects the attributes and the relationship between attributes.

In regards to Python, there are a quite a lot of data science libraries available. Aji-san explained some of them, such as NumPy, pandas, and Seaborn. With NumPy, we can utilize N-dimensional arrays, among other things. Pandas is a data structure and analysis tool. Seaborn allows us to create better-looking plots. He felt that, compared to R, Python is easier to read, can be combined with other platforms/domains, and has more and better visualization choices. On the other hand, regarding data science, it is easier to find answers about R, since it's more mature than Python in that aspect.

f:id:bagus-rahman:20170329183805j:plain

The sixth topic was 'Introduction to systemd' by Chiachun-san. He is the other one of our GIP participants. init is the first process started during booting of a computer system (PID = 1). Most of Linux distributions used SysV-style init (SysVinit). However, it is too old and has many drawbacks, one of them is that it starts tasks serially.

This is where systemd comes in. It is a system and service manager for Linux operating systems, and a full replacement of SysVinit. Chiachun-san highlighted some of its features, such as service dependencies definition, its own logging system, and service identification by utilizing cgroups. It was released in 2010, and today most of Linux distributions have switched to systemd as the default init system.

He also explained some systemd commands, systemctl and journalctl systemctl is used to control the systemd system and service manager. journalctl is used to query the systemd journal (its own logging system). He also showed some usage examples of systemctl and journalctl to do certain tasks.

f:id:bagus-rahman:20170329184004j:plain

The seventh topic was 'PHP 7.1 is Fast (?)' by Uzulla-san from builderscon. He specializes in PHP, has won best speaker award from many tech conferences, and is an author as well. He is also an organizer of tech conferences, one of which is builderscon.

PHP 7.1 was released on last December, and Uzulla-san was intrigued by the impression that it is fast. He then took it upon himself to benchmark the new version of PHP. In doing so, he utilized tools such as ab, httperf, and wrk. He said he wasn't successful in achieving higher performances than existing benchmarks, but he's pretty satisfied with his results.

f:id:bagus-rahman:20170329184030j:plain

As usual, we had a party afterwards :)

31st Monthly Technical Session (MTS) Report

31st Monthly Technical Session (MTS) was held on February 24th. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.

f:id:bagus-rahman:20170310164506j:plain

The moderator of the 31st MTS was Jeffrey-san.

f:id:bagus-rahman:20170310165747j:plain

The first topic was 'Introduction of EBS' New Feature' by Nagira-san. Attaching additional EBS volumes had always been hard for him, because he had had to stop the EC2 instance that the EBS volume was attached to. Fortunately, AWS provided an update which allows him to to increase volume size, adjust performance, or change the volume type while the volume is in use. In other words, now he doesn't have to stop any EC2 instance when attaching additional EBS volumes. This makes his work easier and reduces downtime. Nagira-san also explained in detail the new way to attach additional EBS values.

f:id:bagus-rahman:20170310165821j:plain

The second topic was an explanation of an HDE service's mobile UI, by Kevin-san. He began by reintroducing the service itself. Then, he talked about the technology stack, particularly about why he had chosen Riot as the Javascript framework. The reason was because it's very small, component-based, has simple APIs, and its community is small but friendly. He proceeded by teaching us about the components of the mobile UI and what's actually happening under the hood. He wrapped the session up by explaining his work's performance, past challenges, and future works.

f:id:bagus-rahman:20170310165835j:plain

The third topic was 'Backing Up DynamoDB Tables' by Bagus. He began by talking about the recent events that made him look into the issue further. One strategy we can use to backup DynamoDB tables is to utilise AWS Data Pipeline. Data Pipeline is a service which allows us to automate the movement and transformation of data. Creating pipelines to backup DynamoDB tables is simple, because we can use templates. Via AWS console, we can easily create a pipeline that exports DynamoDB table to S3 and another pipeline that imports DynamoDB backup data from S3.

f:id:bagus-rahman:20170310165841j:plain

The fourth topic was 'Things I Learned from IT Admins in Taiwan' by Nakakomi-san. For almost half of last year, he was working in Taiwan. During that time, he noticed some differences between Japan and Taiwan in several aspects, such as employment culture, decision making, and concern of IT admins. He related these differences to HDE's goal of becoming a world-class IT company. To achieve that goal, we need to think globally. Each country has their own culture, which affects the way the people think, which affects the solution that they need. By knowing more about other countries, we can adjust our solutions to suit their needs.

f:id:bagus-rahman:20170310165848j:plain

The fifth topic was 'Introduction to Video Encoding' by Michael-san. He began by explaining the terminologies related to video encoding, such as containers, codec, compression, and encoder. He continued by teaching us about compression and re-encoding effect. There's always a tradeoff between file size and quality. According to Michael-san, the codec used and encoding parameters affects the result a lot. He also answered some frequently-asked questions regarding video encoding. He wrapped the session up by introducing a software he prefers to encode videos, FFmpeg.

f:id:bagus-rahman:20170310170003j:plain

The sixth topic was an in-depth explanation of an HDE service by Xudong-san. He began by explaining the feature he was working on and its requirements. There had been a previous implementation of the feature, but Xudong-san was requested to redesign it. The original design utilised EC2, while the redesign was to utilise AWS Lambda. The reason was, unlike EC2 instances, Lambda functions needs no maintenance. Furthermore, Lambda functions can also be cheaper than EC2 instances.

However, utilising Lambda functions also had its own problems. This was mainly because he was utilising Lambda functions for I/O-bound actions. He created a new design to solve this issue. This new design utilised two types of Lambda functions, consumer and controller. Controller functions invokes consumer functions, and consumer functions can also invoke other consumer functions. He also highlighted the limitations of AWS that he needed to consider during his implementation.

f:id:bagus-rahman:20170310170009j:plain

The seventh topic was 'Airport Baggage Handling System' by Kelvin-san. He is our current Global Internship Program (GIP) participant. Before his internship at HDE, he had had another internship, during which he worked for projects related to baggage tracking system at HKIA. Baggage handling system manages activities such as checking in baggage to unit load devices, transferring baggages to other flights, and baggage claiming. A good baggage handling system is reliable, handles numerous baggages at the same time, minimises transfer time, and is completely automatic.

Apparently, baggage mishandling is one of the most common issues in airports today. Among the usual causes of baggage mishandling are human error and damaged tags. Furthermore, almost half of lost luggage is due to transfer-related incidents. Kelvin-san explained one of the solutions to baggage mishandling, which is automatic RFID baggage tracking system. According to Kelvin-san, RFID has higher successful reading rate compared to barcode. Towards the end of the session, he explained various components of airport baggage handling system by describing their pictures.

f:id:bagus-rahman:20170310170015j:plain

The day of the 31st MTS was also the last day of Kelvin-san's internship. We had a small event for him and gave him some souvenirs. In turn, he shared his impressions of his time working with us. Thank you very much for your contribution, Kelvin-san!

f:id:bagus-rahman:20170313214426j:plain

As usual, we had a party afterwards :)

f:id:bagus-rahman:20170313213926j:plain