Search
📁

22주차 수업

22주차 수업 전 공부 진행 및 과정

21주차때 중요 질문들
김영한님 강의 DB 2편 10,11 / AWS 2챕터까지
프로젝트 채팅 기능

22주차 수업 진행

21주차 중요질문
김영한님 강의 DB 2편 10,11 / AWS 2챕터까지
프로젝트 코드 리뷰

멘토님 중요 질문.

트랜잭션을 길게 가져가면 생기는 문제
트랜잭션을 어떻게 나누는 것이 좋을까
RDB에 부하가 몰릴 때 어떻게 처리할 수 있을지
AWS와 같은 cloud service를 활용하는 이유
가상 머신 개념 찾아보기
private, public ip가 분리되어 있는 이유

22주차 멘토링 느낀점

오늘도 수업이 알찼다~~~

트랜잭션

사실 저번에 중요 질문에
@Transational 이랑 수동으로 트랜잭션 관리하는거에 대한 차이
에 대한 질문에서 아무리 찾아도 이해가 안가는 부분이 있었다.
왜냐면 @Transactional도 결국 설정만 하면 수동으로 관리하는것처럼 따로 관리가 가능한데
어떤 경우에 굳이 어노테이션을 안쓰고 수동으로 쓰면 좋은지 정리가 안됐음..
그냥 간단한 차이점을 말하면서도 설정은 둘다 가능한데도 왜 수동을 써야하는 경우가 있는지 깊게 이해 안갔다고 솔직하게 말씀드렸다..
한 클래스 내에서 @Transactional 메서드가 다른 @Transactional 메서드를 호출하면 트랜잭션이 적용되지 않는 문제가 있어서(프록시 객체가 자신을 호출할 때 AOP를 거치지 않기 때문) 외부로 클래스를 따로 분리를 해서 사용해야하는데 그러면 한 클래스에서 관리할 수 없게된다.
그래가지고 한 클래스에서도 관리하고 싶으면 수동 트랜잭션 쓰면 좋겠죠
듣자마자 아 영한님 강의에서도 나왔던 외부 클래스 분리얘기랑 연결되서 뭔가 링크드 리스트처럼 연결되는 기분!

서버 개선해보기

이제 예시를 들어주시면서
spring - db
Plain Text
복사
단순 서버가 이렇게 띄어졌을 때 더 개선할려면 어떻게 할거냐고 여쪄보셔서
ngnix를 띄울거 같다고 말했다
그리고 ngnix 관련해서(웹서버) 얘기도 나누다가
nginx - spring - db nginx - spring * n - db
Plain Text
복사
여기서도 더 추가적으로 개선한다면? 하셔서
캐시를 이용할거같다 말함. 레디스를 이용해서 분산 캐싱을 적용할거 같다고 말했다
nginx - spring * n - cahce - db
Plain Text
복사
그럼 이제 db 부하가 오면 어떻게 관리할거냐고 물어보셔서.. 그건 몰라서 찾아오기로 했다!
항상 분산 서버까지 생각하고 개발하면 좋다고 하셨다..

복합키

최근에 채팅 기능 개선하면서
@Table(indexes = { @Index(name = "idx_user1Id", columnList = "user1Id"), @Index(name = "idx_user2Id", columnList = "user2Id") })
Java
복사
이렇게 채팅관련해서 인덱스를 2개 걸어두셨는데 한 쿼리에 인덱스를 여러개 사용이 가능한가요?
앗.. 아뇨
두개를 건 의미가 없는데 두 개의 컬럼에 대해서 인덱스를 걸려면 복합 인덱스를 사용해야 한다.
그러면 각 인덱스를 생성한 경우
index for user1Id, user2Id select * from chat_room where user1Id = ? and user2Id = ?
Plain Text
복사
인덱스가 적용되는지
🫠
잘 걸립니다!
엮어서 인덱스를 생성한 경우
index for (user1Id, user2Id) 1)select * from chatRoom order by userId1; 2) select * from chatRoom order by user2Id;
Plain Text
복사
1,2 번 둘다 인덱스가 적용이 되는지
🫠
1번은 걸리는데 2번은 안걸려요!.. 복합인덱스 정렬로 되서.. user1Id가 앞에 있어서 먹는데 뒤에는 별도로 해주는걸로 압니다 (자세하게 모름..) 그래서 1번만 먹어요!
이렇게 복합키 관련해서도 여쪄봐주셨다.

aws

책에서 단순히 뭔지만 설명되어 있어서 그냥 훑어보기식으로 읽은거 같다.
막상 aws를 아직 사용을 제대로 안해봐서 그런지 책의 깊은 내용은 와닿지 않았다.
개념만 이제 익혀나가고 있었는데
aws 같은 클라우드 서비스를 왜 쓰는걸까요?
이제 클라우드 자체가 언제 어디서든 사용할 수 있고… 임대형식이라 쓰기 좋습니다
물리 서버를 써도 되는데 왜 aws를 사용하는걸까요?
음.. 이제 가격이 aws는 사용한만큼만 나가기도 하고..(장점)
오히려 물리서버가 동일 가격일때 더 비용측면에서 싼데 왜 aws를 사용할까요?
그거 까진 자세하게 몰랐어요.. 음.. 만약 물리 서버가 고장났을 경우를 대비해서 사용하는거 아닐까 싶기도 합니다!
aws에 대해서 왜 활용하는지 더 찾아보면 좋을거 같습니다!
확실히.. 물리 서버를 사용해도 되는데 왜 aws를 사용하는지 잘 모르겠더라..
그냥 다들 aws 사용하니까 나도 따라서 써야지 하는 느낌이였어가지고 왜 회사에서도 aws를 사용하는지 찾아봐야겠다~~!!

개인적인 질문

트랜잭션널하고 수동 트랜잭션 사실 이해가 덜 됐습니다..
위에 멘토링 느낌점 참고
authorName
이번에 사실 프로젝트에서 챗팅쪽에 authorName을 받는 부분이 있었는데 authorId를 가지고 따로 조회해서 사용하면 되지 않냐고 여쪄보셔서
나는 미리 받아두면 그래도 조회를 안해도 되니까 더 좋지않을까 단순하게 생각했는데..
한번 여쪄봐야겠다 생각했는데 마침 멘토링 전날에 또 여쪄봐주셔서 생각해보니까 데이터 일관성을 주기 위해서 조회하는게 맞겠다 싶었다.
막상 멘토링 전에 생각이 들어서 멘토링때 질문거리가 사라짐..ㅎㅎ
이력서 추가해서 올리면 확인해달라고 요청했다 희희

다음주까지

22주차 중요 질문 정리 및 깊게 이해하기
AWS 책 읽어오기
사이드 프로젝트 AWS 진행
매주 1 질문 할거 생각하기.