선한 자극 vs 위기 의식
오픈소스 컨트리뷰톤(OCA)과 DDD를 병행하면서 회사일과 맞물려 너무 바쁜거 같은 요즘인데.. 어케든 가능은 한 것 같다. 그래도 하기 잘했다고 생각이 드는건 주위 사람들에게 선한 자극을 받고 나 또한 과거에 비해 성장하는 것이 느껴진다는 것이다.
OCA에서는 이번에 챌린저스 기간이 끝나고 마스터즈 기간에 돌입했는데, 다들 뛰어난 개발자들이 모였는데 열심히 해서 그런가 리드멘티에 선정되었다. 사실 좀 바빠서 서포트 역할로 하고 싶었는데... 그래도 대충은 못하는 성격이라 어떻게든 1등팀으로 하기위해 전력을 다하고 싶다.
우리팀 프로젝트는 Azure function의 오픈api 스웨거 UI를 렌더해주는 Extension이다. 첨에는 프로젝트의 구조조차 파악하기 쉽지 않았는데, 특히 Visitor 패턴은 정말 낯설었다. 퇴근 후, 남는 시간을 쪼개 거의 하루 내내 구조 파악에만 힘썻던 것 같다. 이후 좀 진입장벽이 낮은 bug issue를 찾아 해결해보기로 했다.
2 PR & 2 Merge
#208 fix Nullable DateTime type to display as date format in specification (2 issue close)
이슈 중 Nullable DataType Attribute에서 Date Format을 Date-time Format으로 인식하는 버그가 심심치 않게 발견되는 이슈가 제법 보였다(#193, #143)
이번 첫 오픈소스 이슈를 파악하면서 느낀 점이 있다면, 한 줄을 추가하더라도 같은 기능을 하는 하나의 프로젝트의 구조를 전부 알고 있어야 한다는 것이다. 사이드 이펙트를 생각해야되고 그에 맞는 테스트 케이스를 전부 작성해야 한다. 위의 원인은 Visitor 객체 중 NullableObject를 담당하는 Visitor에서 해당 Validation Attribute를 주입받지 못한 것이 원인 이었다. 스키마에 해당 Attribute를 추가해 주며 문제는 해결되었다.
OCA를 하면서 가장 많이 배운 것은 바로 테스트 케이스의 작성이다. Unit Test부터 Integration Test까지 커버리지가 높은 테스트를 작성하도록 코드리뷰를 받고 해당 이슈를 merge 할수 있었다.(코드는 1줄 추가했는데 테스트를 200줄 넘게 넣었다 ㄷㄷ)
https://github.com/Azure/azure-functions-openapi-extension/pull/208
#224 Add ByteType Support (7 issue close)
가장 큰 국면한 과제 중 하나였던 콘텐츠 타입 명세 정의 지원...! ByteArrayType과 관련되서 이슈를 해결해 나갔다. 기존 이슈를 해결하면서 구조를 조금은 알 것같아 조금 수월하게 진행했었던 것 같다. 본 이슈를 1주일 정도 리뷰를 받아 해결하면서 git사용도 조금 더 능숙해진 것 같다.
다음의 양식을 지원하게 되면서 이슈를 7개정도 한번에 해결하는 결과를 얻을 수 있었다.
- Binary contents like application/octet-stream, image/png, etc
- multipart/form-data
- application/x-www-urlencode
https://github.com/Azure/azure-functions-openapi-extension/pull/224
v0.9.0
위의 해결한 issue는 0.9.0 릴리즈 노트에 포함될 예정이다. 앞으로 남은 기간동안 Integration test 뿐만 아니라 재귀모델 명세 스택오버플로 현상 해결, ModelCasing 문제를 추가적으로 해결해 볼 예정이다.
멘토님과 멘티들에게서 많은 것을 배울 수 있기도 하고 재밌어서, 다음에도 참여하고 싶은 마음이 커지는 것 같다.