아키텍처는 데이터와 사용자 인터페이스를 담당하는 웹 UI 서비스와 프린터마다 동작하는 출력 클라이언트(데몬) 서비스로 분리하기로 했습니다.
지난 한 달 동안 시간을 쪼개서 AdminLTE와 Razor pages로 간단하게 UI 서비스를 구성했습니다.
대체로 할 일 앱의 실제 사용시간은 아주 짧고 휴대폰에서 접근하는 상황까지 고려하면 리액트 등의 프론트 전용 프레임워크나 Blazor는 오버스펙이라는 생각입니다.
자바스크립트를 거의 사용하지 않고 form post 기반으로 구성했는데 그렇다고 fetch를 완전히 배제할 수는 없어서 Razor pages와 Controller가 공존하는 꽤 어설픈 UI를 만들었습니다.
완성도는 어중간하지만 완성도에 집착할수록 프로젝트의 끝이 멀어지니 지금은 동작만 확인하고 다음으로 넘어가기로 합니다.
이제는 AI가 만들어줬던 출력 코드를 검토할 차례입니다.
AI가 만들어 준 샘플을 가볍게 읽어보니 프린터 출력 코드는 API 호출 사용성이 나쁘지 않지만 한글을 이미지로 출력하는 코드는 사용성이 좋지 않아서 처음부터 다시 작업하기로 합니다.
새로운 구조로 작성할 것이므로 기존 채팅창은 버리고 새 채팅창에서 요구사항을 다시 정리해서 하나의 클래스로 만들어 줄 것을 요청합니다.
AI가 거침없이 만들어 준 코드를 붙여넣고 테스트하니 역시나 문제가 있습니다. 영문이나 숫자, 특수문자를 전각에 가깝게 출력하는 버그가 발견되었습니다. 또한 가로 확대는 잘 만들어 놓고 세로 확대는 가로 세로를 모두 2배 확대하는 코드를 만들었습니다. 아직은 알잘딱깔센 같은 걸 기대하기는 무리인가 봅니다.
AI에게 요청한 코드는 잘 모르는 분야라서 AI코드를 블랙박스로 간주하고 만들어진 코드를 일체 읽지 않았습니다. 붙여넣고 테스트하고 수정을 요청하고 다시 붙여넣는 작업을 반복했습니다.
문득 AI개발이 좀 더 대중화되면 개발자는 점차 QA화 될 것 같다는 생각이 듭니다.
다음은 UI 서비스와 연결할 네트워크 모듈입니다.
사이드 프로젝트 레벨에서 출력 클라이언트를 수십 대 붙이는 아키텍처를 고려할 필요는 없으니 먼저 http 폴링으로 구현하고 여유가 생기면 WebSocket으로 개선하면 될 것 같습니다.