开始

我最开始听说wepay的时候,并不知道它也是JP的一部分。我在论坛看到一些wepay员工的好评就申请了,面试也相当顺利,最后才发现原来wepay几年前被jp买了。Lawrence和他的三个发小兼室友也是JP员工。后来我公寓租约结束后也跟他们住了半年,直到我们搬到湾区。那段时间大家一起住在一个townhouse里,全都是JP员工,简直跟宿舍一样,真是快乐极了。缘真是妙不可言。

When I first heard about WePay, to be honest, I didn’t know it was part of JP. I saw some positive reviews from WePay employees online and decided to apply. The interview process went quite smoothly, and it was only at the end of the process that I found out WePay had been acquired by JP a few years ago. My partner, Lawrence, and three of his childhood friends, who were also his roommates at the time, were working for JP as well. There was a period when we all lived together in a big townhouse, and all of us were JP employees — the house of JP. It felt just like living in a dorm, we had so much fun. Fate works in mysterious ways.

2022年初,公司宣布回公司办公。由于我从入职就是在费城远程工作,老板说可以将我转成fully remote,当时愚蠢的我拒绝了,觉得在这边已经待太久,想要一些新鲜感。后来发现其实我完全可以转成fully remote之后,自己去找新鲜感。总之,2022年7月我和我对象搬到了湾区。

In early 2022, JP announced a return to the office (RTO). Since I had been working remotely from Philly from day one, my boss offered to convert my position to fully remote. I declined because, at that time, I felt like I had been living in the greater philly area forever and needed something fresh, some new excitement. It was a foolish choice; I could have accepted the fully remote offer and then moved wherever I wanted, even to the Bay Area, so that I wouldn’t need to go into the office. Anyway, I relocated to the Bay Area with my partner in July 2022.

数据迁移 Data Migration(2021Q3 - 2022Q1)

加入weepy之后参与的第一个项目是将组里的主数据库从Google Datastore 迁移到MySQL。Migrate的原因主要是: 1) 以后可能要走multi cloud,不想要绑定在GCP; 2) Google自己不再支持Datastore了; 3) 安全问题; 4) write contention是个大问题。

The first project I worked on in WePay was data migration, migrating our main database from Google Datastore to MySQL. The reasoning behind it were: 1) As we might move to multi-cloud in the future, we don’t want to be bound by a specific tech provider; 2) Google itself is deprecating Datastore; 3) Security concerns; 4) Write contention is a big pain in Datastore.

这是我第一次参加真正的一个有主题的的开发,兴奋极了,那段时间感觉每天都能学到新的东西。当时带这个项目的同事设计文档写得非常好,跟她工作非常舒适。2022年1月,项目已经进入收尾阶段,她离开了Wepay。收尾工作交给了另一个同事,而我接了别的工作。这种数据迁移类项目的难点如何确保数据准确,且过程不影响现有系统。原来是一个双读取的设计,写全部进新的数据库,读新旧数据库再按版本返回。但在执行的时候这个策略遇到了很多问题,导致在最后阶段重做了rollout plan,重新实现了一个双写设计。

It was my first time being part of a real project, with an actual roadmap, business needs, proper design, and reviews. I was thrilled. During that time, I felt like I was learning something new every day. The project lead had a strong technical background and provided comprehensive documentation; everything was well designed and explained. It was always a pleasure to work with her. In January 2022, as the migration was coming to an end, she left the firm. The remaining tasks were handed over to another colleague, and I moved on to a new project. The main challenge of this kind of data migration project is ensuring data integrity with zero downtime for the existing system. The initial design was basically a dual-read strategy: always write to the new database, read from both the new and old records, and then apply version control. However, this didn’t work out in our case. We ended up redesigning the rollout plan to implement a dual-write strategy instead.

“RUN THE BUSINESS” (2022Q2 - 2023Q1)

我加入wepay的时候虽然已经被JP收购了,但依然保持初创风格,独立运作,用自己的infra,有自己的客户。后来JP推进融合,发生了很多drama,高管换了一波,老员工一直在离职。我刚加入时我们组有20人,一直走一直招,到最后,直到我被重组到JP之前,组里好像只剩几个是原来的老员工,其他全都是和我同期加入填坑的“新人”。

At the time I joined WePay, although it has been acquired by JP for few years, the full integration never truely happen. It operated in a startup style, had its own infrastructure, served its own clients. Later, as JP pushed for integration, a lot of drama happened: new senior leadership, original employees kept leaving, culture shift etc. When I first joined, our team had 20+ people. Till I leave the team, it seemed like only a few original employees remained, with the rest being “newcomers” who joined around the same time as me.

我们组负责接收客户,处理/存储/验证KYC,各种服务有十几个,责任范围非常宽。而由于这些人员变动和业务复杂性,导致新人非常难在“保护期”内了解到每个服务。结果就是oncall在这个组里是噩梦。幸运的是有一个能力超强,人又无敌好的tech lead。遇到问题他不但告诉你“怎么做”,还引导你思考“为什么”。我从他身上学到很多,非常佩服。他现在依然是我的tech lead。

Our team owned about a dozen different microservices, managed client onboarding, merchant profile storage, and KYC verification. Due to these “loss of context” reorganizations and the complexity of the system, it was extremely hard for us as new hires to be well-prepared during the ramp-up period. Everyone would agree that on-call was a nightmare in this team. Luckily, we had a SUPERB tech lead! He has extensive domain knowledge and is absolutely passionate about technology. His mentorship impressed me the most; he would not only tell you how to solve a problem but also guide you to think about the reasoning behind every solution. He is a respectful person, and we are still working together today.

那段时间除了oncall,有一些日常的临时需求,修bug,还做了很多infra上的改善,增强observability,加dashboard加alert加各种trace,每次发现问题处理问题就会写进文档,让其他组员能够参考,大家都在努力让彼此不要那么痛苦。这些全都是属于Run The Business(RTB)。在那一年里,RTB和oncall占了一大半,其余时间里我做了我在wepay的第二个项目,一个从数据迁移的衍生项目。

During that time, besides on-call duties, we needed to handle adhoc requests, and bug fixes. In addition, we kept improving the system and the process of team operation. We enhanced our infrastructure to provide better observability by adding dashboards, alerts, various traces. Each time we resolved an issue, we make sure it got documented so that the team could share collective knowledge. Everyone was trying to make each other’s life easier. All these effort are what we call “Run The Business” (RTB). In that year, half of my time were spent on RTB and on-call duties. The rest was devoted to my second project in WePay, a spinoff from the data migration.

未完待续。
To be continued.