본문 바로가기
기록/Beyond SW

Beyond SW 7기 2주차 회고록

by clean01 2024. 5. 26.

부제: 난 대학시절 블로그를 전공했단 사아실

벌써 2주차가 끝났다니.. 시간이 어떻게 가는건지 모르겠을 정도로 빠르게 지나가는 것 같습니다.

2주차 회고록 시작합니다!


🍀 좋았던 점

레디스 배우면서 기존 프로젝트에 적용할 포인트를 생각한 점

레디스를 배우면서 제가 하고 있는 프로젝트에 적용할 포인트가 많다고 느꼈습니다.
수업에서 들은 내용들을 앞으로 제 프로젝트에 반영해 보려고합니다.

  • 레디스로 재고 관리: 현재 제 프젝에서는 재고를 그냥 MariaDB에 저장해놓고 있습니다. (MVCC니까 트랜잭션 걸고 동시에 업데이트하면 나중에 고친애가 롤백되니까 그냥 놔둔 상태입니다.) 하지만 레디스로 재고관리를 하는게 훨씬 성능이 좋고 거의 동시에 주문을 해도 하나가 롤백되는 경우가 없으니 사용자 경험에도 더 좋을 것 같아 레디스로 재고 관라히는 것으로 바꿔보려고 합니다.
  • 상품 또는 매거진의 조회수/좋아요 수를 레디스로 관리: 솔직히 제 프로젝트에선 그렇게까지 할 필요가 있나.. 싶기는한데 조회수, 좋아요 수를 레디스로 관리하면 좋겠다는 생각이 들었습니다. -> 이거는 할지 말지 조금 더 고민해봐야겠습니다.

솔직히 요즘 너무 바빠서 언제쯤에나 반영해볼 수 있을지는 모르겠지만... 일단 수업에서 프젝에 쓸 수 있는 인사이트들을 얻어갈 수 있어서 좋았던 것 같습니다.

강사님께 ERD 피드백도 받고 다른 분들의 설계도 볼 수 있었던 점

강사님께서 한분한분 모든 수강생 분들의 ERD를 봐주시고 피드백 해주신 것이 감동적이었습니다..

제게 피드백 주신 부분은 상품-후기를 같이 찾아올 때 많은 조인(무려 테이블 4개)이 발생하니 후기에 상품 아이디를 추가해서 반정규화하면 좋겠다는 점,
쿠폰의 issuer가 누군지(판매자인지 플랫폼인지) 명확하게 하고, 쿠폰이 적용되는 정책을 잘 생각해야한다는 점(이 피드백은 지금은 간단한 ERD라 반영하지는 못했지만, 나중에 또 쇼핑몰 프젝을 하게 된다면 꼭 생각해봐야하는 부분인 것 같습니다.),
주문 테이블에서 '쿠폰 적용 전 가격', '쿠폰 적용 후 가격' 두 속성을 넣는 것보단 '쿠폰 적용 전 가격', '쿠폰 할인가' 이렇게 두개를 넣는 것이 더 좋겠다는 점 등이 있었습니다.

그리고 다른 수강생 분들의 설계도 볼 수 있었는데, Customer와 Seller를 나눈 은지님과 혜진님의 설계가 인상깊었습니다.
저는 나누지 않고, Member에다가 일반 유저, 판매자, 어드민을 Enum으로 구분하는 것으로 퉁치고, 판매자 유저는 입점을 할 수 있다는 것을 가정해서 '가게' 테이블을 하나 더 만들었는데, 그것보다는 그냥 Customer와 Seller 자체를 나누고 '가게' 테이블을 없애는게 훨씬 깔끔하다는 생각을 했습니다.
혼자 공부하면 한가지 생각에만 국한될 수 있는데 다른 분들의 설계도 보고 강사님께 피드백도 받는 기회가 되어서 좋았습니다. :)

블로그 열심히 써서 상품 받음

제가 7기에서 첫 우수 회고록 작성자로 뽑혀서 상품을 받았습니다. 너무 기쁩니다ㅎㅎ 😆
다른 분들 회고록도 쭉 봤는데, 엄청 잘쓰신 분들이 많으신데 저를 뽑아주신 매니저 분들께도 감사하고 축하해주신 동기분들이랑 강사님께도 감사합니다. :)

상품은 무려 교보문고 2만원 권입니다,, 솔직히 스벅 아메 정도 주시려나 싶었는데, 상품이 너무 야무져서 놀랐습니다.

저걸로 평소에 사고 싶었던 책인 클린 코드를 샀습니다.

(물론 가격 오버돼서 제 돈 좀 보탬)


아직 제가 읽을 레벨은 아니라고 생각하고 지금 당장은 읽을 물리적인 시간도 없지만, 저거 말고는 딱히 사고 싶은 책이 없어서 그냥 질렀습니다.
언젠가는 꼭 읽어야할 책이라고 생각하니, 미래의 제가 읽겠죠(?)


😢 부족한 점

주말과 이동시간을 비효율적으로 사용

하루종일 수업듣고, 공부하고 나오면 힘들어서인지 보상심리가 도지는 건지, 집가는 지하철에서 계속 노래만 듣고 핸드폰만 하게됩니다.
집가는 1시간 10분 내내 노래듣는데 쓰는건 좀 아깝다는 생각이 들었습니다.

그리고 어제(토요일)도 뭔가 많이 밀린 일을 해치우려고 했는데 어쩌다보니 공부한 것도, 논 것도 아닌 흐지부지한 하루가 돼버렸습니다,,

주말 시간을 잘 활용하도록 노력해야겠습니다.


📖 배운 점

데이터모델링

  • 제 1, 2, 3 정규형에 대해 자세히 알 수 있었습니다. 예전에 한번 공부했던 내용임에도 다시 보니 많이 헷갈렸었는데, 이번 기회에 다시 한번 정리하고 넘어 갈 수 있는 기회가 되어 좋았습니다. 복습한 내용은 여기에서 보실 수 있습니다. 그리고 4, 5 정규형에 대해서도 강의를 들을 수 있어서 좋았습니다. 혼자 정처기 필기를 공부하며 이해가 잘 가지 않아서 그냥 넘어갔던 부분인데, 강의를 들으니 혼자 공부할 때보다 훨씬 잘 이해할 수 있었던 것 같습니다. (하지만 이 부분은 아직도 낯설고 설명하기가 어렵습니다...ㅎㅎ)
  • 반정규화의 중요성을 깨달았습니다. 위에서도 작성한 내용인데, 제가 설계한 ERD에서는 상품과 후기 정보를 같이 가져오려면 테이블을 4개나 조인해야합니다.(자세한 내용은 이 글를 참고해주세요 하지만 상품-후기를 같이 보여주는 것은 빈번한 작업이므로, 후기 테이블에 상품 아이디를 추가하는 식으로 반정규화를 할 수 있다는 것을 알게 되었습니다.

MariaDB

  • 복합키를 사용하면 그 두 키에 동시에 인덱스가 걸려서, select 시에 where절에 복합키 중 일부로만 조건을 걸어서 찾아오면 인덱스를 활용할 수 없다는 것을 알았습니다. 데이터모델링을 할때, 어떤 컬럼으로 데이터를 많이 조회하게 될지를 생각해서 복합키를 쓸지, 인조 PK를 쓴다음 특정 컬럼에 인덱스를 걸지를 잘 고민해야겠다고 생각했습니다.
  • MariaDB의 스토리지 엔진인 innoDB와 MyISAM의 차이점을 알 수 있었습니다. 특히 MyISAM이 트랜잭션을 지원하지 않는 엔진이라 행 잠금이 없어 빠르기 때문에 데이터 조회가 빈번한 애플리케이션에 적합하다는 것을 알게 되었습니다. 또한 ALTER TABLE author ENGINE = MyISAM; 이런 쿼리로 테이블 별로 스토리지 엔진을 변경할 수 있다는 것을 알게 되었습니다.
  • View라는 기능이 있다는 것은 알았지만, 정확하게 어떨 때 사용되지는 몰랐었는데 뷰가 어떻게 활용되는지를 알게 되었습니다. 비개발팀에서도 데이터 조회를 하고 싶은 상황이 생긴다면, View를 만들고 그 View만 읽을 수 있는 권한을 가진 계정을 만들어 전달하면 된다는 것을 알았습니다. 또한 뷰를 저장해놓으면 자주 실행하는 쿼리를 편하게 실행할 수 있다는 것도 알았습니다.

Redis

  • 레디스에 0~15번 DB가 있다는 것을 알게 되었습니다. 레디스를 Jwt 저장소로 사용하면서 찍먹했었는데, 16개의 디비로 구성되어 있다는 것을 처음 알았습니다. 아직 제대로 공부해보지 않아서 정확하지 않지만, 디비 각각을 다른 용도로 사용할 수 있는 것 같습니다. (예를 들어 0번은 토큰 관리, 1번은 좋아요 수 관리, 2번은 재고 관리 등등)
  • 레디스가 싱글 스레드 기반이라는 것을 알았습니다. 전에 레디스로 재고를 관리를 하면 동시성 이슈가 해결된다라는 말은 들어본 적이 있지만, 왜 그런지는 알지 못했습니다. 그런데 수업에서 레디스가 싱글 스레드 기반이기에 그렇다는 것을 알게되었습니다. 또한 레디스가 좋아요수 관리에도 쓰인다는 것을 알았는데 레디스는 제가 생각하는 것보다도 활용도가 엄청나가 높은 것 같다고 생각했습니다.

🌱 개선할 점

이동시간에 복습하기!

학원에서 편도로 1시간 10분 정도 거리에 살고 있는데, 3주차부터는 집에 가는 길 지하철에서 핸드폰으로 강의자료를 보면서 당일에 배운 내용을 다시 읽어보고 복기하는 시간으로 활용해보려고 합니다.

주말에는 스터디 카페가서 공부하기

토요일에 sqld를 보고 와서 카페에서 공부를 하다가 집에서 공부를 했었는데, 집중하지 못해서 하루가 흐지부지 흘러가 버렸습니다.
오늘(일요일)은 카페 대신 더 집중이 잘되는 스터디 카페에 가서 프로젝트 관련한 밀린 일들을 처리해보려고 합니다.