TIL-20210530~0605

2021. 05. 31.

05.30

  • 데브독스 주제를 정했다. 다음 달 부터는 한 달 주기로 글을 쓰기로 했다. 그러면서 중간중간 자기가 쓴 만큼 발표하고 피드백 받고. 주제는 객체지향으로 했다. 얼마전 조영호님 발표와 객체지향의 사실과 오해를 참고할 것이다. 문제는 제목이다. 객체지향이라고 제목을 지으면 범위가 너무 커지니 잘 줄여야하는데, 일단 객체지향 이야기로 생각하고 있지만, 그럼에도 더 범위를 좁힐 수 이름이 없나 생각해봐야겠다.

05.31~06.01

  • 이번 수업은 실행계획이었다. 뷰를 잠깐 보고 지나갔는데, 뷰가 가상의 테이블이고 논리적인 데이터를 사용하긴하지만, 알고리즘에따라 달라진다고 한다. 스칼라 쿼리의 스칼라가 뭔지도 잠깐 살펴봤다. 닫힌 연산과 열린 연산에 대해서는 조금 더 공부해봐야 할 것 같다. 정규화 할 때와 함수형 할 때도 봤던 것 같은데 어렵다.

    인덱스와 관련해서는 내가 아는 것과 크게 차이가 없었는데, 효율성을 판단하는 기준이 얼마전에 배웠던 클러스터링 인덱스와 관련이 있다. 예전에는 간과하고 넘겼었는데 공부하지 않고 넘어가기 힘든 부분인 것 같다. 잘 살펴봐야겠다.

  • 숙소조회의 도메인 소스를 작성했다. 생각보다 오래걸렸는데 그래도 구조가 나쁘진 않아보인다. 도메인과 데이터를 분리해서 작성했기 때문인데, 덕분에 자유롭게 작성해서 재밌었다. 개선이 필요한 부분이 보이긴 하지만, 나중에 고민하기로 했다. 평일 계산에 시간을 너무 많이 쏟았기 때문인데, 실제와 비슷하게 하고 싶어 금요일과 토요일 숙박을 주말로 생각하고 일요일 숙박을 평일로 생각하려고 했다. 그런데 조건을 한 번에 맞추기가 쉽지 않았다. 결국 테스트 케이스가 엄청 많아졌는데, 좋은건지 나쁜건지 모르겠다.
  • 이어서 레포지토리를 작성하려고 했는데, 도메인과 엔티티의 불일치가 발생하는 부분이 생겼다. 전략 패턴을 이용한 부분인데, 지금은 이대로도 충분한 것 같긴 하다. 다만 추후 할인정책이 추가되거나 해야 한다면 테이블을 따로 분리해줘야 할 것 같다. 잘 생각해보자.

06.02~06.04

  • JDBC 템플릿으로 이것 저것 해봤다. row 매퍼는 객체 그래프 탐색을 잘 해주는 것 같아 좋았다. 하지만 그럼에도 잘 맞지 않는 부분은 결국 DB 구조를 잘 짜야 해결이 되는 듯 하다. 물론 엔티티를 떼서 개발하면 어느정도 해결되지만, 결국 나중에 해야 할 일의 의존성을 낮춰주는 정도인 것 같다. 예전에는 단순히 prepared statement 대신 쓰는 느낌이었지만, 다시 사용해보니 감회가 새롭다. 특히 콜백을 직접 제어한다거나, KeyHolder를 사용하여 다른 프레임워크처럼 짜볼 수 있어서 좋았다. 좀 더 로우하게 짜면 resultSet을 이용하여 키 값을 불러올 수 있지만, 구현이 훨씬 간단해진다. 하지만 문제는 역시 동적 쿼리 생성인데, 만약 제대로 쓰려면 따로 라이브러리를 만들어서 써야 할 것 같다. 검증 기능까지는 없더라도 빌더 형태로 만들어 쓸 수 있도록.
  • 코틀린도 쿼리 저장용으로 잠깐 써봤는데, 템플릿 스트링을 지원하기에 편하게 짤 수 있지 않을까 하는 생각도 들었다. 정규식으로 처리 가능하지만 있는게 확실히 훨씬 편하다.
  • 이번 프로젝트는 여러가지 착오로 많이 미진했던 것 같다. 바이크 때문에 멘탈이 깨졌던 것을 감안해도 3주라는 시간에 비해 거둬들인 것이 적은 것 같다. 주말동안 aws는 꼭 한 번 봐야겠다.
  • 비동기는 파이로가 히로에게 api만들어달라고 하는 것. 멀티 쓰레드는 백엔드 팀 프로세스 안에 있는 파이로와 히로가 함께 일하는 것. 만약 페어프로그래밍을 하면 동기적이게 작업을 수행한다. 그러면 이벤트 드리븐은 왜 빠르냐? CPU작업이 아니면 다시 부탁한다. 그리고 다른 할 일을 한다. 이렇게 생각해보면 꼬리 물기라 결국 차이가 없는 것 아닌가? 하는 착각을 할 수 있다. 차이점은 이렇게 하면 필요한 스레드가 줄어든다는 것이다. 즉 같은 스레드로 더 많은 일을 할 수 있다. 그래서 속도가 더 빠르다고 하는 것이다. 반면, cpu intensive한 작업 혹은 IO작업을 기다려야 할 경우는 어쩔 수 없이 느려진다. 이 것 때문에 레디스를 쓰는건가?

TODO

~05.31

  • 객체지향 정리(호눅스 과제)
  • AWS 강의듣기
  • 데브독스 넥스트

Optional

  • 엘라스틱서치
  • 서브넷 구분
  • s3 이용
  • 깃헙액션으로 aws 배포
  • classForName 테스트
정대화
DaeHwa_Jeong@outlook.com

Powered with by Gatsby 2.0