[슬축생 프로젝트] 12. 서비스 1년째, 도메인과 ssl 인증서 연장
2024. 9. 2. 13:45
개발 공부 일기장/사이드 프로젝트
개요오늘은 기술적인 얘기가 아닌 실제 서비스에서 나오는 얘기를 들고 왔다, 분명 새로운 프로젝트인 오아시스의 글을 준비하고 있었는데 정말 마지막이란 생각으로 슬축생 프로젝트를 한번 더 연재한다. 어느덧 슬축생 프로젝트를 배포한지 1년이 지났고 약 500명의 유저가 1년동안 다녀갔다, 물론 일반 사용자를 타겟으로 한 서비스가 아닌 동아리 부원들을 위한 내부 서비스이기 때문에 운영중의 이슈는 크게 없었다. 하지만 얼마전부터 내 메일함이 바빠지기 시작했다, 바로 도메인과 ssl 인증서를 연장해야한다는 알림들이 오기 시작한것이다.보통 다른 서비스들은 1년전에 접어서 정말로 1년 후 필요에 의해 연장을 하는 케이스가 처음이여서 기분이 굉장히 신기했다. 나는 도메인과 ssl을 클라우드 업체에서 제공해주거나 자동으로..
[슬축생 프로젝트] 11. JPA N+1 문제 해결, 모르고 있었다니 충격적..
2024. 8. 6. 20:32
개발 공부 일기장/사이드 프로젝트
개요슬축생 프로젝트 시리즈는 이제 끝날줄 알았다, 개발 후 문제 없이 운영한지 1년이 되어 가는 서비스였고 더 이상 개선점이 없다고 생각했다.그렇게 1년이 지나가는 사이에 나는 많이 성장하였다, 영한님의 강의를 들으면서 여러 성능 최적화와 프레임워크의 내부 동작 방식에서 오는 문제점을 해결하는 법등을 배워나갔다. 그러다가 문득 생각이 들었다, 내가 슬축생을 개발할 당시에는 N+1에 대한 지식이 없이 개발을 하였는데 과연 N+1이 발생되고 있지 않을까라는 의문이 들었다. 그런데 발생 안 할 가능성이 거의 없다고 생각했다, 왜냐면 엔티티끼리 긴밀하게 연결되어 있고 서로 LazyLoading 전략으로 데이터를 끌어온다는 것을 개발한지 1년이 지난 지금도 명확하게 기억하고 있기 때문이다. 그래서 다급하게 오랜만..
[슬축생 프로젝트] 10. 회원가입 아이디 중복 확인시 동시성 문제 해결
2024. 2. 19. 22:22
개발 공부 일기장/사이드 프로젝트
개요 월요일 아침에 회사에 일찍 출근하여 마무리를 하고 글에 정리한다, 주말 내내 이 문제 하나 붙잡고 있느라 하루종일 공부만 했다. 이번 문제를 해결하면서 트랜젝션과 영속성 컨텍스트에 대해서 부족한 부분을 공부하게 되었고 아직 공부하지 못했던 트랜젝션 격리 수준, 낙관적락과 비관적락, 데드락 발생시 디버깅 방법등을 알게 되었다. 이 부분들은 다른 글에서 자세히 정리하도록 하겠다. 근본적인 원인 일단 한줄로 간단하게 원인을 말하자면 중복 값이 저장되면 안되는 컬럼에 유니크 제약조건을 걸어놓지 않았던 것이 문제였다. 어어 나가지말고 끝까지 들어보십쇼, '근본적인' 문제는 핵심은 정확히 같은 시간, 데이터로 요청할때 생기는 동시성 문제였다. 사실 특별하게 멀티 쓰레딩을 사용한적이 없다, 하물며 paralle..
[슬축생 프로젝트] 9. 프로메테우스 & 그라파나 모니터링 도입기
2024. 2. 9. 17:27
개발 공부 일기장/사이드 프로젝트
시작하며 이번에 vultr로 이사를 가게 되면서 서버 성능을 최소로 줄였다. 그리고 그에 따라서 발생하는 문제들을 모니터링 하기 위해서 모니터링 툴을 찾던 중 프로메테우스와 그라파나를 많이 사용하는것을 보고 한번 도입해봤다. 서버 구성 이렇게 서버 구성이 바뀌게 되었다. 전체 구성도의 일부를 가져온것이라 설명이 안 보이는데 빨간줄은 공인망, 초록망은 내부망(VPC), 파란선은 로컬 통신을 뜻한다. seulchuksaengmonitor.store라는 도메인을 추가로 구입하여 그라파나 서버에 적용하였다. 지금은 백엔드와 디비서버 이렇게 두가지 서버를 모니터링하고 있다. 프론트는 제니퍼프론트라는 툴로 모니러팅하고 있는데 이는 따로 다루겠다. 구성은 간단하게 3가지로 나눌 수 있는데 데이터를 프로메테우스로 보내..
[슬축생 프로젝트] 8. Vultr로 이사가기 & 도커로 배포 자동화 하기!
2024. 1. 21. 20:30
개발 공부 일기장/사이드 프로젝트
시작하며 우리 개발팀에서 큰 프로젝트를 시작하기 위해 슬축생 프로젝트는 이제 마무리 하고 쭉 유지보수 정도만 하는것으로 결정되었다. 그래서 마지막으로 프론트에서 UI/UX 개편을 조금 한 뒤에 클라우드를 이사를 가서 안정화 시키고 쭉 사용하려고 한다. 클라우드를 왜 이사하지? 일단 앞에 글에서도 다뤘겠지만 한번 aws로 이사하려다 월 100g 무료 트래픽에 멈칫해서 여전히 무료 오라클 클라우드 하나에 리얼서버와 테스트 서버 모두 넣어서 사용하고 있었다. 하지만 이제 프로젝트를 마무리하면서 모니터링 툴들을 사용하고 싶었는데 그럴려면 일단 지금 하나로 뭉쳐있는 서버를 찢어야 된다고 생각을 했다. 그리고 또한 지금 사용하는 서버가 4코어에 24기가 램인데 이 성능에서는 장애를 마주할 수 없을것 같아서 일부러 ..
[슬축생 프로젝트] 7. Spring Exception Handler로 우아하게 예외 처리하기
2023. 12. 28. 19:48
개발 공부 일기장/사이드 프로젝트
시작하며 예외처리 부분들을 개선하게 되었다, 기존의 컨트롤러 코드에 덕지덕지 있던 예외처리들을 모두 지우고 Exception Handler를 사용했다. 사실 이미 예전에 이 부분에 대해서 우리 껌딱지 개발팀 기술블로그에 작성하긴 하였지만 내 개인 프로젝트 기록에도 중요한 부분 같아서 같은 내용이지만 여기에도 기록을 남겨 본다. 기존의 예외처리 방법 try { Example e = exampleService.example(); return result("success", "성공!"); } catch (내가 만든 예외1 | 내가 만든 예외2 e) return result("fail", e.getMessage); } 기존에는 위 코드 처럼 컨트롤러단에서 예외 처리를 하고 있었다. 서비스단에서 커스텀 되어 있는..
[슬축생 프로젝트] 6. AWS로 이사 시도.. 하지만 어림도 없지
2023. 12. 5. 17:58
개발 공부 일기장/사이드 프로젝트
개요 배포를 해서 약 100명 정도 되는 사람들이 사용을 한지 약 3개월 정도 되어 가고 있다, 시간이 참 빠른것 같다. 중간에 이런저런 이슈가 있었지만 크게 문제가 되는 부분은 없었고 무난하게 지속적인 기능 추가를 해 나가면서 운영을 했다. 그러다가 나는 이런 생각을 해보았다. 아 솔직히 지금 인프라 아키텍쳐가 너무 짜쳐놓은것 같다.. 이거 한번 제대로 설계 해볼까? 현재 많은 회사들이 AWS에 서비스를 올려놓고 사용하고 있다. 나도 AWS의 서비스들에 고등학생 시절부터 굉장히 관심 많았지만 고2때 EC2 프리티어를 사용하다가 3만원인가? 요금이 나온것이 그렇게 공포로 기억에 자리 잡아서 그 뒤로 AWS 공포증이 생겨 사용하지 않았다 그렇게 계속 공부를 하면서 AWS를 계속 외면할 수는 없으니까 이번에..
[슬축생 프로젝트] 5. 배포와 인프라 아키텍처 변경
2023. 9. 13. 22:11
개발 공부 일기장/사이드 프로젝트
개요 드디어 개발을 끝내고 배포를 하게 되었다!! 와아.. 그리고 배포한 뒤 뒤늦게 무언가를 깨닳아서 급하게 인프라 아키텍쳐를 변경하게 되었다. 이번 글에서 배포뒤 유저들이 들어와서 사용하는 모습을 보고 느낀점과 왜 인프라 아키텍쳐를 변경하게 되었는지 설명하도록 하겠다. 배포 및 사용자 유입.. 배포가 이번이 처음이진 않다. 그동안 고등학교때부터 크고 작은 프로젝트들을 진행하면서 클라우드에 많이 배포를 해봤지만 실제로 사용자들이 많이 들어와서 사용하는적은 이번에 처음이여서 꽤나 긴장했었다. 사실 100명 정도만 사용해서 크게 걱정할 부분은 없었지만 그래도 무슨 버그라도 터질까.. 엄청 긴장하고 신경을 많이 썻던것 같다. 다행히 배포 후 큰 문제는 없었고 대부분 다 생각했던대로 진행되었던것 같다. 사실 오..