토이프로젝트 선정
GitHub를 경험한 개발자들은 Readme에 자신을 표현하고 홍보하기 위해
글이나 이메일, 블로그 등을 작성한 경험이 있을 것이다.
과거 내 소개글에는 기술 스택과 개인 블로그, 배지 등 글자로 꾸미는 방법으로 소개글을 작성했었는데,
이렇게 추가하는 방식은 잘 보이지도 않고 url을 방문하도록 유도하는 데도 효과적이지 않다.
그래서 깃허브 프로필을 어떻게 효과적으로 꾸밀지 고민하던 중,
소개글에 최신 블로그에 대한 대표이미지, 제목, 설명, 날짜 등으로 시각화하는 것을 목표로 잡았고
특정 시간에 새 글이 올라왔을 때 자동으로 갱신해주는 프로젝트가 있으면 좋을 것이라고 생각했다.
그래서 요즘 개인적으로 다루고 있는 TS 스택을 활용하여 매일 특정 시간에 GitHub Actions가 동작하도록 설정하고,
블로그에서 데이터를 가져와서 README 파일을 업데이트하는 구조로 프로젝트를 만들기로 결정했다.
개발 과정
프로젝트 흐름
프로젝트 흐름은 간단하게 git action을 통해 특정 시간에 최신 글이 있는지 판단하며 RSS 데이터를 가져오고,
해당 데이터를 모델 객체로 변환하는 로직, Readme에 업데이트하기 위해 html 코드를 활용하는 형태로 메서드를 분리하였다.
- Tistory RSS 정보 수집: 블로그에서 특정 시간 (cron)에 최신 포스트 정보 수집
- TypeScript services: 수집한 정보를 바탕으로 README 파일에 업데이트할 테이블 형태로 데이터 구조화
- README 업데이트: GitHub API를 이용해 README를 업데이트하고 PR을 생성하여 해당 날짜로 병합하는 구조
기존과 다른 새로운 기술 스택 결정
주 언어로 Java Spring 을 통한 개발을 진행하고 Jenkins를 사용하여 CI/CD를 관리했었는데,
이번에 새로운 기술 스택을 사용했는데 확실히 장점이 많이 존재했다.
- Github Action
- TypeScript
- Node.js
GitHub Actions로 GitHub 리포지토리 내에서 바로 설정하고 실행할 수 있어 별도의 외부 서버가 필요 없었고,
TypeScript와 Node.js는 코드 작성과 초기 설정이 간단해 개발 효율성이 높아 빠르게 배포하고 확인해 보는 장점을 경험했다.
개선점 및 고민
- 이미지 썸네일 크기 개선: 현재 미리보기 이미지의 크기를 최적화하여 더 잘 보이도록 개선 필요
- 블로그마다 다른 RSS 정보 처리: 블로그마다 RSS 정보가 달라지기 때문에 이를 유연하게 처리할 수 있도록 개선하도록 구조화
- TypeScript 테스트 코드 작성: 기존에는 Swagger UI를 사용했지만 TypeScript로 테스트 코드를 작성해 보기
주 언어로 사용하지 않다 보니 간단한 로직 하나로 보이는 이 코드를 어떻게 구조화를 진행해야 하는지 많은 서치를 진행했던 것 같고, 장점은 의존성 관리나 yml 파일 활용 등에 많은 편리함을 경험하였다.
마무리 및 앞으로의 계획
이 프로젝트는 간단한 아이디어에서 시작되었지만
깃허브 프로필에 블로그 포스트를 효과적으로 노출하는 방법을 찾을 수 있었고,
개발 과정에서 새로운 스택을 사용하며, 자동화된 워크플로우의 유용성을 다시 한번 체감하여 큰 배움이 된 것 같다.
앞으로도 블로그 포스팅 목록을 보다 효과적으로 노출하고 관리할 수 있도록 발전시킬 계획이고,
다른 개발자들도 쉽게 사용할 수 있도록 RSS 데이터에 대한 정보 처리 표준화, 테스트코드 작성을 진행해 볼 것이다.