이전 글
2024.01.02 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관에 대하여 [0/0]
2024.01.05 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : Legacy와 현재 구현한 코드 [2/0]
⌨️ 연관도 변화
게시물이 추가로 작성될 때마다, 이전 게시물도 연관도 변화에 따른 연관 게시물 변화가 필요하다.
이전 글에서도 말했지만, 예전에는 이 변화를 즉각적으로 반영시키고 싶었으나, 현재는 그 중요도가 즉각적으로 반응해야 할 정도는 아니라고 판단해서 Spring Batch + Scheduler로 주기적인 작업을 통해 해결하려고 했다.
1. Spring Batch
왜 배치를 선택했는 지 말씀드리기 전에 배치에 대해 간략히라도 설명을 하자면 '대용량 데이터의 일괄작업' 정도로 볼 수 있다.
혼동할 수 있는 부분이 배치를 통한 자동화 이런 키워드를 들어봤을 텐데, 이 때문에 배치 자체로 일정 작업의 반복이 이뤄진다고 착각할 수 있으나, 이는 Batch+ Scheduler 나 Quartz를 활용한 반복 작업의 등록을 통해 이뤄지는 거다.
쉽게 말해 Batch로 일괄작업을 만들고 Scheduler 혹은 Quartz를 활용해 반복할 주기를 만들어준다.
1.1. 왜 Batch를 사용하는가?
이번에 배치를 사용한 이유는 크게 3가지가 있다.
- 실시간으로 데이터의 작업이 이뤄지지 않아도 괜찮다고 생각했다. 즉 하루 한번 혹은 일정 시간마다 연관게시물 매핑을 해주면 된다고 판단.
- 추후 다양한 기능 확장을 위해 미리 배치 서버를 분리하는 것이 낫다고 판단
- 작가 등록 관리 -> 일정 시간이 지나고도 승인되지 않은 작가들은 일괄 반려 등 - API 서버의 과부하를 고려
- 연관 게시물을 매핑하는 동안 DB를 제대로 조회하지 못하거나 락이 걸려 데이터를 수정하지 못하는 등의 행위 방지
1.2 Over Programming 같은데..?
누군가는 충분히 지적할만한 내용이다.
무슨 이런 프로젝트에서 서버 부담 때문에 Batch를 따로 빼냐,
필요에 의한 분리가 아니라, Batch를 쓰려고 억지로 분리한 거 같다.
나도 동감하는 부분이며, 예전에 마찬가지로 이에 대해 회의적이었다.
점점 신입에게 요구하는 기술 수준을 만족하기 위해 필요해서 기술을 사용하는 것이 아닌 그걸 경험하기 위한 프로젝트를 하는 주객전도가 발생하고 있으니 말이다.
그와 같은 측면에선 반박의 여지가 없다 나 또한, Batch가 완전히 필요해서가 아닌 Batch를 공부하고 싶어서 사용했으니 말이다.
그러나 이전에 회의적이었던 태도에서 변화를 가진 이유는 비유하자면 다음과 같다.
사람이 필수영양소와 채워야 하는 영양 기준에만 맞추어 음식을 섭취하지 않는다.
즉 지금 당장 비타민과 단백질이 필요하더라도 나는 떡볶이가 먹고 싶어서 그걸 먹을 수도 있다는 말이다.
기술이 필요하다고 생각되고 그것을 도입해야 될 때만 골라서 사용한다면, 이런 작은 스케일의 프로젝트에서 언제 겪어보겠는가?
2. 잘 활용했는가?
이왕 쓰기로 해서 사용했다면 잘 사용하는 것이 좋지 않겠는가?
냉소적이 시각을 보내는 분들도 아마 이런 의미일 것이다
대부분의 강의를 그냥 따라치거나, 써봤자 정도로는 의미가 없는데 해야 하나?
2.1. 아쉬운 점
Batch를 잘 활용하지 못했다는 생각이 든다.
무슨 말이냐면 단순한 Job이 되었다는 뜻이다.
Job의 성공 실패에 대한 핸들도 없고 단순히 작업의 반복이다.
아쉽지만 첫 술에 배부를 순 없다고 Batch에 대해 알아가는 것으로 만족하는 프로젝트이다.
한 번 해봤다고 안 하는 게 아니라 다음에 또 필요를 느끼면 더욱 활용도가 높아진 사용을 반복해서 숙달하는 것이 중요하다고 생각한다.
2.2. 앞으로
2.1의 아쉬운 점을 바탕으로 개선을 하면 된다고 생각한다.
첫 번째로는 Job을 좀 더 탄탄히 만들 것이다. 연관도 계산 결과를 후처리 하여 다음 계산 속도를 높인다든지, 다양하게 생각해 봐야겠다.
두 번째로는 Job의 개수를 늘릴 것이다. 애초에 이것을 상정하고 만든 Batch 서버이니 말이다.
이번 프로젝트는 꽤 애정이 들어가는 것 같다.
처음부터 이전 것들에 비해 높은 이해를 가지고 시작한 것도 있지만, 후속 처리할 기능들을 이미 많이 생각해 뒀다.
아무래도 다양한 기능들이 한 개씩만 들어간 프로젝트를 양산하는 것보다 깊이 있게 하나를 마무리 짓는 것이 중요하지 않나?
라고 생각의 변화가 있었던 것이 큰 것 같다.