본문 바로가기

프로젝트5

AWS RDS Lock 해결하기 0. 인트로 일어나니 아침부터 서버가 뻗어 있습니다. 서버에 요청을 날려보니 504 에러가 응답했고 부랴부랴 AWS에 접속 해서 로그를 뒤져봤습니다. response header를 읽는 중에 타임 아웃이 발생했다고 하네요. response 데이터를 읽어드릴 때 버퍼 크기를 조정하면 해결 된다고 해서, 자세한 내용은 모르지만 엔진엑스 설정을 바꿔주었습니다. 하지만 결과는 달라지지 않았습니다. 1. 원인은 DB Lock RDS에 접속 해서 활성 세션을 확인 해보니 아니나 다를까 DB가 잠긴 상태였습니다. DB Lock을 해결하려면 가장 우선은 잠겨 있는 프로세스를 삭제 해주어야 합니다. 직접 CLI로 프로세스를 KILL 해주어도 되지만, DB 클라이언트 도구를 이용하면 더욱 간단합니다. DBeaver에서는 .. 2022. 8. 17.
Github Actions + Docker Compose + Elastic Beanstalk GIthub Actions, Docker compose, Elastic Beanstalk으로 CI/CD 파이프라인 구축하기 딱 이 세 가지 조합으로만 구성된 간단한 CI/CD 파이프라인의 레퍼런스가 없어서 도움이 되시길 바라며 작성합니다. 이 조합은 CI/CD를 구성하는 데에 과도한 리소스를 쏟을 만한 시간이 없을 때 선택하면 좋을 것 같습니다. 추상적인 CI/CD 흐름은 아래와 같습니다. 정확한 흐름은 아니지만, Local에서 Remote Repository로 Push가 발생하면 GIthub Actions가 이를 감지하여 EB에 Docker Compose 파일을 전달해서 EB 내부에서 실행하도록 구성합니다. 구성 순서는 아래와 같습니다. Docker에 대한 기본적인 이해가 필요합니다. Dockerfil.. 2022. 7. 21.
SpringBoot 전략패턴 + IF 분기 없애기 전략패턴을 사용한 이유 여러 웹툰 플랫폼의 정보를 한번에 확인할 수 있는 종합 웹툰 플랫폼을 만들고 있었는데 한 가지 고민이 있었다. 네이버 웹툰, 카카오 웹툰, 레진코믹스 등 각각의 웹툰 플랫폼의 정보를 크롤링 해와야 하는데 플랫폼의 종류가 워낙 많기 때문에 확장성에 대한 고려가 필요했던 것. 확장성을 고려하지 않고 작업할 경우 각각의 웹툰 플랫폼마다 서비스 계층의 메소드를 추가한다고 생각하면... 끔찍하다. 확장성을 고려한 설계를 생각하다가 떠올린 게 전략 패턴(Strategy Pattern)이다. 각기 다른 요청을 처리하는 메소드 자체는 하나로 두고 들어온 요청을 파악해서 적절한 로직으로 분기할 수 있다면 추가할 플랫폼이 생겼을 때 개발이 수월하리라 판단했다. 전략패턴이란? 전략패턴은 행위를 인터페.. 2022. 6. 8.
*.do 없애고 깔끔한 HTTP API 만들기 0. *.do 방식에 대한 지극히 개인적인 소견 요즘 생긴 취미는, 웹서핑을 할 때 URI를 유심히 보는 것이다. 쿼리스트링이 몇 개나 붙어있는지 리소스는 어떤 방식으로 표기하는지 보다 보면 은근 재밌다. 단순한 쿼리스트링에도 암호화가 돼있는 걸 보면 신기하고, 가끔 URI 만 봐도 어떤 프레임워크로 개발했는지도 보인다. 예비군 사이트 주소가 참 재밌는데, yebigun 이라는 네이밍도 재밌고 뒤에 붙은 1 때문에 피씽 사이트 같기도 하다. 그리고 게시글의 주제인 .do extension이 URI에 포함되어 있다. https://www.yebigun1.mil.kr/dmobis/index_main.do 이 .do 확장자는, 취미를 즐기다보면 꽤 자주 보이는데 뭔가 굉장히 보기 껄끄럽다. 단순히 RESTfu.. 2022. 5. 9.
Spring - Jenkins - tomcat으로 이해하는 CI/CD 0. 들어가며 CI/CD를 접하지 않은 상태의 개발자가 개발 산출물을 배포하려면 어떻게 해야 할까? 서버에 Putty로 접속 해서 변경된 파일의 위치를 잡고 그 위치에 FTP로 변경된 파일을 덮어써야 한다. 만약 변경된 것이 jsp나 static 파일이라면 그나마 괜찮지만 클래스 파일이라면? 서버를 껐다 켜야 하기까지 한다. 실제로 직전 회사에서는 작은 배포는 개발자가 알아서 FTP를 쏘고, 배포를 하지 않고 쌓인 개발 건은 정기 배포일을 따로 잡아서 한꺼번에 진행 했다. 사용자가 없는 시간을 이용해서 서버를 내리고, 파일을 덮어쓰며 배포하고, 다시 서버를 올려 테스트를 진행한다. 당연히 배포 날은 야근이다. 테스트에서 에러가 나면 퇴근은 기약이 없어진다. 또 그동안은 사용자들은 서비스를 이용할 수 없는.. 2022. 4. 7.