“없으면 만든다 - from Scratch” "설정만 바꾸면 돌아가는 프레임워크를 만들기까지"

26.02.03 yoda


1편에서 남긴 숙제

1편 마지막에 이런 코드를 보여줬다. 1편 보러가기

if step_name == 'seek':
    db_writer.register_file_statuses(...)
elif step_name == 'copy':
    db_writer.update_file_steps_batch(...)
elif step_name == 's3_upload':
    db_writer.update_file_steps_batch(...)

프레임워크 안에 비즈니스 로직의 구체적인 내용이 박혀있었다. Step이 추가되면 프레임워크를 수정해야 했고, 수집 방식이 바뀌면 프레임워크를 수정해야 했다. 분리했다고 생각했는데 실은 분리가 안 된 거였다. v1의 문제를 한 문장으로 정리하면 이거였다.

"프레임워크가 비즈니스 로직의 내용을 알고 있다."

이걸 뒤집어야 했다. 프레임워크는 "Step을 실행하고 결과를 처리한다"는 것만 알면 되고, 구체적으로 어떻게 실행하고 어떻게 처리하는지는 비즈니스 로직이 스스로 정의해야 한다. 인터페이스가 늘게되더라도, 큰방향안에서 프레임워크의 바운더리에 침범하지는 않아야한다.


Framework가 몰라야 할 것들

v1에서 프레임워크가 알고 있던 것들을 나열해봤다.