210510-TIL

janeljs·2021년 5월 9일
0

TIL (2021년 1~7월)

목록 보기
54/77
post-thumbnail

오늘 한 일

느낀 점

🧩 자료구조

  • 4시에 일어나서 자료구조 과제 1번을 풀었다. 카페 asmr을 틀어두고 게터에 혼자 앉아있으니 뭔가 진짜로 카페에 온 기분이었다☕
  • 링크드 리스트를 이용한 큐 구현은 전에도 해봐서 배열을 이용한 circular queue를 구현해봤는데 resizing이 제일 어려웠다. 배열의 크기를 엄청 크게 선언하고 싶다는 유혹이 들었지만 모든 자료구조는 동적 할당을 전제로 한다는 말을 어디선가 들었어서 상황에 따라 배열의 크기를 조정하는 메서드를 정의해보았다.

🧩 AWS 배포

  • 서브넷끼리는 CIDR 블록 범위가 중첩되면 안 된다.
  • 라우팅 테이블을 따로 설정해주지 않으면 기본 VPC의 라우팅 테이블이 자동 설정된다.
  • database server로 사용할 인스턴스는 보안그룹을 web server로 사용할 인스턴스들이 있는 그룹으로 설정해주면 된다.
  • public ec2에 접속한 뒤, 프라이빗 IPv4 주소로 private ec2에 접속하려고 하면 Permission denied (publickey)가 뜨는데 이건 key파일이 없기 때문이다. 이럴 때는 key forwarding을 하면 된다.
  • ssh-add baseball-key.pem 명령어로 key forwarding을 하려고 했는데 Could not open a connection to your authentication agent. 에러가 발생했다. stack overflow를 참조하여 아래 명령어를 입력해주니 잘 된다.
eval `ssh-agent -s`
ssh-add
  • ssh -A ec2-user@(elastic ip 주소)를 실행했더니 자꾸만 permission denied가 떴다. ssh -A ubuntu@(elastic ip 주소)로 바꿔주니 잘 작동한다. 접속 후 private ip로 db 서버 접속에도 성공했다.
  • WAS 여러대가 다 동일한 NAT를 사용한다면 부하가 NAT에 몰리게되고, NAT가 SPOF(single point of failure)가 된다. 이를 방지하기 위해선 웹서버가 있는 서브넷 안에 NAT 게이트웨이를 넣으면 된다. DB 서버로 사용할 인스턴스의 라우팅 테이블을 나트게이트웨이를 target으로 설정한 테이블로 바꿔주면 완성!
  • NAT 게이트웨이에 돈을 쓰고 싶지 않다면 디비 서버에서 인터넷을 쓰고싶을 때 살짝 라우팅 테이블을 public용 테이블로 바꿔주면 된다. ip까지 할당해주면 DB 서버에서도 인터넷이 잘 된다🤣 나도 호눅스처럼 스크립트로 짜고 싶은데 어떻게 짜야할지 감이 안 와서 못짜고 수동으로 진행했다.
  • db 서버를 따로 만들면서 sudo apt install mysql-server부터 nginx & tomcat 연동까지 처음부터 다시 진행... 반복학습이 짱이지뭐...
  • "Access denied for user 'root'@'localhost'"라는 메시지가 떴는데 이럴 땐 sudo mysql -u root로 접속하면 된다.
  • cd /etc/mysql/mysql.conf.d에서 mysqld.cnf의 bind-address를 0.0.0.0으로 바꾸고 저장하면 외부 접속이 허용된다.

🍩 프로젝트

  • 금요일이면 마감인데 아직 만족하지 못한 요구사항이 많아 구현과 배포를 분담하기로 했다. 정이 컨트롤러 메서드 로직 처리를 해주시고, 내가 VPC, RDS 등을 적용하여 서버를 구축하고 배포 자동화 스크립트를 작성해보기로 했다.
  • RestController 내부에서 redirect하고 싶을 때는 RedirectView를 이용하면 된다.
    public RedirectView initialize(@RequestBody HashMap<String, String> teamInfo) {
       ... 
        return new RedirectView("/game/" + matchId);
    }

    @GetMapping("/{matchId}")
    public ResponseEntity<ApiResponse> game(@PathVariable Long matchId) { ... }
profile
알고리즘 풀이는 👉 janeljs.github.io 👈에 올려요💓

2개의 댓글

comment-user-thumbnail
2021년 5월 11일

앗 제인선생님의 TIL에 등장하다니 영광입니다!! ㅋㅋ

1개의 답글