주어진 업무를 진행하면서 느꼈던 감정과 생각을 정리하는 글입니다.
이번에 맡은 업무를 요약하면
1. 유저가 웹페이지에서 버튼을 클릭하면 정보가 담긴 파일이 생성된다. (확장자: hml)
2. 생성된 파일은 서버의 하드디스크에 지정된 경로에 저장된다.
3. 저장된 파일을 <input type="file" ...> 을 이용하여 파일의 정보를 DB로 저장해야 한다.
3-1. 이때 사용자가 파일을 업로드하는 것이 아닌 생성된 파일이 자동으로 업로드되었으면 한다.
해당업무를 진행하면서 많은 것을 느낄 수 있었다. 먼저 업무를 진행하는 데 있어서 가장 큰 난관이었는데 지금은 이해하고 정리했기에 어떤 내용인지 알 수 있지만 처음 들었을 때와 화면정의서를 받았을 때는 페이지에 버튼이 왜 필요하고 뭘 해야 하는지 감도 못 잡았다. 그래서 허비한 시간이 거의 1주일은 된 것 같다.
업무에 대한 이해도 부족 문제는 정말 허무하게 해결했다. 선배분께 드릴 질문을 정리하면서 '이 버튼이 왜 필요한 거고 정확히 어떤 기능을 원하는지를 모르겠다'라는 내용을 글로 정리하고 있었는데 정리하면서 문득 해당 프로젝트의 전체적인 부분을 살펴보아야겠다는 생각이 들었고 그렇게 개발하는 입장이 아닌 사용하는 입장에서 서비스를 이용해 보았다. 그러니깐 갑자기 보이지 않았던 것들이 보였고 그동안 서로 떨어져 있던 의문점들이 하나로 뭉쳐져서 무엇을 해야 하는지를 알게 되었다.
여기서 느낀 건 역시 생각만으로는 해결되는 것이 없고 글로 쓰거나 말을 하기 위해 정리하는 과정에서 스스로 깨달을 수 있는 것들도 많다는 것을 알게 되었다.
두 번째는 기술적인 문제인데, 뭘 해야 하는지 깨닫고 나서는 어떻게 해야 하는지에 대한 고민에 빠졌다. 업무를 진행하기 위해 각종 블로그, stackoverflow, chat GPT 등을 이용하며 기술적으로 막히는 부분에 대해서 찾았는데 결론은 '불가능'이었다. 내가 하고자 했던 것은 버튼을 클릭하면 사용자의 PC에 파일이 생성될 것이고 JS, JQuery를 이용하여 로컬 파일에 접근하여 해결하는 방식이었다. 하지만 브라우저에서는 사용자의 동의 없이 로컬 파일에 접근을 막는 기능들이 있었고 가져온다 하더라도 <input type="file" ...> 은 readonly 속성을 가지고 있기에 스크립트를 이용한 수정, 삭제가 불가능하다는 것을 알게 되었다. 그렇게 또 한 번 업무에 어려움을 겪고 있을 때 생각을 다시 해보았다. 지금 내가 겪고 있는 문제의 원인은 기술적인 것보다 앞서서 사용자 PC의 파일에 접근하려 해서 생긴 문제라고 관점을 바꾸었고 실제로 파일이 저장될 때 어떻게 진행되는지를 살펴보았다. 그 결과 접근 방향이 완전 틀렸다는 것을 알게 되었다. 사용자 PC에 저장된다고 생각했던 파일은 사실 로컬에서 스프링부트를 실행했기에 내 PC가 서버가 되어서 PC에 저장된 건데 이걸 사용자 PC에 저장된다고 생각했던 것이다. 그래서 JS를 이용하여 사용자 PC의 파일을 가져오는 방법에서 자동 업로드를 체크하였는지를 확인하는 변수를 추가하고 해당 변수 값에 따라서 서버에 저장된 파일을 불러오는 방법을 택했다. 물론 최종적으로 선택한 방법도 쉽게 진행되지 않았지만 JAVA에서 File을 이용하여 처리를 하면 됐고 그에 대한 정보들은 블로그를 찾아서 얻을 수 있었다.
마지막 방법도 사실 깔끔하게 해결된 것은 아닌 게 코드를 짜면서도 이 방법이 맞는 방법인지 최선인지를 계속 생각하다 보니 머리가 아파져 오긴 했지만, 구현은 시켜야 했기에 작업을 완료하였다.
그렇게 약 2주간의 머리 아팠던 업무를 오늘로 마무리했고 각종 테스트를 진행한 뒤 업무 결과를 보고하고 마칠 예정이다.
요약.
문제점 1. 업무는 주어졌는데 무엇을 해야 할지 몰랐다.
해결방법 1. 선배에게 질문하기 위해 생각을 정리하면서 글로 작성하던 도중 깨닫게 되었다.
느낀 점 1. 아이디어, 질문 뭐든 간에 머리에만 담고 있는 건 비효율적이다. 누군가에게 알려준다 생각하고 글로 정리해 보자.
문제점 2. 업무를 진행하던 도중 기술적으로 '불가능'하다고 생각되는 지점이 발생했다.
해결방법 2. 진행하던 업무를 잠시 멈추고 진짜 원인이 기술적인 게 맞는지 다시 생각하고 탐색하여 전혀 다른 곳에서 원인이 있었음을 발견했다.
느낀 점 2. 코드를 빨리 작성하고 구현을 빨리하는 것도 좋지만 프로젝트 전체적인 부분을 살펴보며 한 곳에만 집중하는 것을 지양하자. 여기서 프로젝트란 코드 외에도 인프라까지 포한한 것이다.
'회고' 카테고리의 다른 글
egov 3.6 > egov Boot 4.2 회고 (with security) (0) | 2024.05.24 |
---|---|
20240321-회고(스프링 웹소켓 오류 회고 / 오류 해결완료 / 원인파악 중) (0) | 2024.03.21 |
JWT 에 대한 생각 정리 (0) | 2024.02.29 |
20231208 회고 (0) | 2023.12.08 |
20231115 업무 회고 (0) | 2023.11.15 |