-
Notifications
You must be signed in to change notification settings - Fork 0
김현수 6주차 개인 회고
Kim Hyunsu edited this page Aug 2, 2024
·
1 revision
- VPC
- ip-tables 를 설정할 때 주의할 점
아래의 명령어를 통해 primary network interface 를 찾아 iptables 를 설정해준다.
netstat -i
sudo /sbin/iptables -t nat -A POSTROUTING -o {primary_network_interface} -j MASQUERADE
sudo /sbin/iptables -F FORWARD
sudo service iptables save
https://docs.aws.amazon.com/vpc/latest/userguide/work-with-nat-instances.html
- 쉘 스크립트
#! 공인 IP 를 알아내는 방법
aws --region ap-northeast-2 \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-0a9d00c7eb481af68" \
--query 'Reservations[*].Instances[*].[PublicIpAddress]' \
--output text
- IMDS
- 랜덤 스쿼드 리뷰
- 💡 새로 알 게 된 점
- @NotNull 어노테이션을 통해 벨리데이션을 하면 좋다~
- 필터로 RESTAPI 요청에 대한 Exception 을 묶어서 처리한 점이 좋아 보였다.
- 나는 하나씩 잡아서 처리해준다.
- deleted_at 으로 삭제 여부 확인
- username을 넣지 않고 조인해서 넣도록 수정
- 🚨 궁금한 점
-
제가 DB connection 을 하나만 두고 있는데 유저 2만명일 때까지 문제가 발생하지 않습니다.
- Connection Pool 을 써야하는 명확한 이유가 무엇인가요 ?
→ 쿼리가 복잡하지 않아서 그런 것 더 복잡하거나 네트워크 지연이 발생하면 지연 문제가 크게 발생한다.
-
그리고 동시에 쿼리를 날려도 처리를 하는데 어떻게 된거죠 ?
- 동시에 처리 아님, 쿼리 실행 속도가 너무 빨라서 그런거 같다.
-
- 💡 새로 알 게 된 점
그리고 DB 접근할 때 랜덤 포트로 접근하는 것 같다.
- ⚙️ ConfigLoader 만들기
- 설정 정보를 숨길 수 있다.
- ❓ ServiceLocator 은 안티패턴 ?
- 필요한 곳이 아닌 다른 곳에서도 객체를 접근해서 사용할 가능성이 있어서 위험하다.
- 필요한 곳만 넣어주는 DI 가 더 좋다.
- 하지만 내가 구현한 부분에는 문제가 크지 않고 테스트 용이성이 높아서 좋다.
- 🏭 RepositoryFactory 구현
Repository를 생성할 때 DIContextListener는 Repository의 구현체에 상관없이 주입을 받고 싶다.
다음과 같이 Factory 패턴을 적용하면 DIContextListener 는 Repository의 구현체와 상관없이 주입이 가능해진다.
- 🏊 ConnectionPool 적용
- 기존 단일 커넥션을 이용한 서버는 고가용성을 추구할 수 없고 네트워크 지연이 발생하거나 복잡한 쿼리를 처리할 때 문제가 발생할 수 있으므로 커넥션풀을 적용했다.
- tomcat vs HikariCP
- 커넥션 풀 관리 정책에 관하여
- I/O
- 파일 I/O
- 네트워크 I/O
- mainframe
- ㅇㅇ
- mainframe
- I/O 멀티플렉싱
- epoll → select