180113~14-TIL

Reading time ~2 minutes

14일 한일

  • EC2 인스턴스에서 쉘스크립트를 통한 배포 자동화

  • EC2 인스턴스에 접근을 용이하게 하기 위해 password로 접속 허용

  • /etcs/hosts 에 엘라스틱IP에 대한 도메인 등록

  • 트렐로 테스트 코드 일부 수정

  • jQuery로 AJAX를 이용하는법 포스팅


15일 한일

트렐로 Boards 페이지(User, Member, Board) 구현 중 문제점 파악

  • 문제의 핵심은 DB/JPA

  • 객체가 테이블들에서 키값을 통해 연결되고, 키로 데이터들을 뽑아다가 쓰는 것에 익숙지 않다. 그러다 보니 모델 설계에 대한 진행이 안됨.

  • 차선책으로 과감하게 모델들은 고려 안 하고 구현해야 할 기능을 먼저 생각하고 그에 따라 필요한 모델의 형태를 정하기로 했다.

  • JPA에서 난항. ManyToOne, OneToMany, ManyToMany를 어떻게 설정해야 할지…


14~15일 느낀점

  • 쉘 스크립트를 통한 배포 자동화를 하다 보니까 EC2에 접속하는 게 상당히 번거롭게 느껴졌다. 그래서 패스워드를 통한 접속을 열고, hosts에 내 EC2 인스턴스에 대한 IP를 외우기 쉬운 이름으로 등록을 해두니까 한층 수월해졌다. 대신 그만큼 보완에 구멍이 생겼을 수도 있겠지만…

  • 확실히 자주 사용 안 하면 까먹는다. 그래서 jQuery로 AJAX를 이용하는 법에 대해 진짜 아주 간단히 포스팅 해뒀는데 나중에 필요할 때 요긴하게 쓰일 것 같다.

  • 테이블을 이용하는 게 익숙지 않다는 것을 깨달았다. 단순히 테이블들이 이미 만들어져 있어 crud를 이용하는 것이었다면 무난하게 진행했을 것 같다. 그러나 서로 관계가 엮인 테이블들은 어떻게 만들어야 할지 머릿속에 쉽게 안 들어 온다. 예를 들어 작성자, 게시글이 있으면 게시글이 작성자의 ID를 가지게 하는 것이 일반적인 것 같은데 왠지 작성자게시글을 가지게 하는 것이 자연스럽다고 느꼈다. 확실히 개념적인 글들만 머릿속에 들어 있었지 키값을 이용하여 db를 사용하는 것에 익숙지 않은 것 같다.

  • 정보처리기사나 생활코딩의 mysql 강의를 보고서 기초는 다졌다고 생각했는데 단순히 쿼리문을 읽고 간단한 쿼리에 대한 작성만 가능한 수준이지 데이터베이스를 다루는 것 자체는 안된다는 걸 깨달았다.

  • 확실히 모델을 먼저 고려 안 하니까 테이블들을 어떻게 짜야 할지 생각을 안 하고서 작업을 진행하게 되니까 멈춰있던 작업이 다시 시작됐다. 현재 Acceptance Test 코드부터 작성해 나가면서 어떤 형태로 모델이 있어야 할지 생각하면서 진행 중이다. 어느 정도 성공했다 생각했는데 역시나 ManyToOne, OneToMany, ManyToMany 관계에서 설정을 어떻게 줘야 할지 문제에 부딪치고, 기본적으로 관계 자체가 꼬여버려서 반쯤 멈춘 상태다…

    그래서 모델들 간의 관계를 조금 바꾸고 있는데 실마리가 조금씩 보이는 것 같다. 운이 좋다면 내일 중으로 끝날 것 같고, 아니라면 화요일까지 진행이 될 것 같은데 이번 고비만 잘 넘기고 나면 db를 다루는 일에 있어 한 단계 성장, 혹은 첫걸음을 떼게 될 것 같다. 게다가 보안을 제외한 다음 작업들에 속도가 붙을 것 같다.

    아! 한가지 더 고려해야 할 것은 프론트 단에서 데이터를 잘 받아 처리하는 것인데 이건 위의 문제가 해결된 다음 고민해 보자.

  • 잘하는 부분에 대해서도 좋지만, 못하는 부분일수록 TDD가 더욱 중요하다는 걸 느꼈다. 잘하는 부분에 대해서는 내가 구현한 코드가 잘 작동할 것이라는 확신을 느낀다.(거기에 제대로 된 테스트 코드까지 있다면 느낌이 아닌 사실이 되며, 테스트를 통해 검증을 한다) 하지만 못하는 부분에 대해서는 구현을 하고 나서도 잘 된 건지 아닌지 알 수가 없다. 그렇게 계속 구현하다가 운이 좋다면 아무 문제없이 완성이 되겠지만 어느 순간 문제가 생겼을 때 무엇이 문제인지 알 수 없는 총체적 난국인 상황이 온다. 게다가 작업이 진행될수록 잘 진행이 되고 있는 것인가에 대한 불안감이 점점 커진다.

    하지만 TDD로 구현을 하게 되면 내가 못하는 부분이라도 초록불이 뜨는 걸 보는 것으로 한고비를 넘겼다는 확신을 가질 수 있다. 그렇게 다음 작업으로 넘어가서 현재 진행해야 할 작업에만 집중을 할 수 있게 된다. 다만, TDD에 익숙해지는 것이 쉽지 않은 게 사실이다. 게다가 좋은(혹은 제대로 된) 테스트 코드를 짠 게 맞나 의문이 들 때가 있긴 하다. 잘못된 테스트 코드는 구현한 기능에 구멍을 만들 테니 말이다. ‘좋은 테스트 코드 짜기’ 이건 앞으로도 내 스스로 성장해 나가야 할 과제인 것 같다.


내일 할일

  • trello 구현하기

    • DB와 JPA에 대한 이해 및 사용