DB Replication 개념, 장단점, 동작원리
·
DB
0. DB Replication 이란Replication은 "복제"라는 뜻이다.그렇다면 DB Replication은 데이터베이스를 복제한다는 뜻일 것이다. 어떤 이득을 취하기 위해 DB를 복제하는 걸까? 단순 백업 용? 1. DB Replication 이점위와 같이 트래픽이 급증하면 DataBase에 당연 무리가 갈 것이다!!이를 해결하는 단순한 방법 중 하나는 Database의 스펙을 늘리는 것이다. (Scale Up)하지만 학부생 수준에서는 AWS Freetier를 사용해서 DB를 구축하는 경우가 흔해 비용이 나가는 Scale Up 방식을 선택하기엔 부담이 된다. 트래픽 증가로 DB 성능이 저하가 된다면 바로 Scale Up을 선택하지는 않는다.개발자라면 다양한 선택지 중에서 비용이 싸고 성능을 더 ..
new Thread()는 어떻게 실행될까
·
JAVA
java.lang에 있는 Thread.class를 보면서 Thread가 생성되는 과정을 깊게 공부해보고자 한다! There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started.The other way to create a thread is to declare a class that implements the Runnable interface. That ..
Discord Webhook (+Spring AOP)
·
프로젝트에서 일어난 일
1. 개요실제 16기 동아리 모집이 시작됐다.회원가입, 지원서 등 여러 생성 요청이 DB에 저장된다.중요한 행위의 경우 LOG를 남겨서 관리해야 하는 데, 현재 우리는 Logback만 사용중이다. (에러 로그는 CloudWatch로 관리중)하지만 AWS ASG의 경우에 EC2가 계속 재생성되므로 Logback만 사용하는 건 적합하지 않다.따라서 Discord, Slack 같은 외부 인프라에 중요한 행위의 발자취를 남기고자한다. 2. 시작 3. 요구사항 & 고려할 점 정리 4. Discordable 설계객체지향 설계를 위해 디스코드에 메세지를 전송하고자 하는 Dto는 Discordable 인터페이스를 구현하도록 설계했다.이렇게 설계하여, DiscordService는 어떤 Dto인지 상관 없이 Discord..
Index로 조회 성능 45배 개선하기
·
프로젝트에서 일어난 일
1. 개요Tave 지원자 모집 과정에서 지원서 질문 조회 성능을 개선하기 위해 Index를 도입내 생각 흐름을 Figma로 정리해보았다. 2. 요구사항3. 도메인 & Entity 설계4. 고민과 답 이에 대한 해결 방안5. 최종 엔티티 설계안 & 생성 흐름 설명기타 필드는 생략했다! 6. 개선점 파악실제 지원 모집 시 ResumeQuestion은 많이 생기는 Class -> Full Scan 방식은 성능이 점차 심하게 떨어진다!7. 조회, 삽입 성능 비교 8. 테스트 결론10000개 기준 조회 성능 차이는 엄청날 듯! 한눈에 보기 쉽도록 차트를 만들어 정리했다! 9. Index 적용 후 실제 운영 환경에서는?동아리 서류 모집이 8월 17일 끝났다.DB에 저장된 ResumeQuestion은 5362개이고..
면접 배정 자동화 사이트 개발 (Optaplanner)
·
프로젝트에서 일어난 일
1. 개요1 - 1. 간단한 설명Tave 면접 배정(매칭, 스케줄링) 자동화 사이트 제작서류 합격자들이 희망하는 면접 시간 中 적절한 면접 시간을 구할 수 있도록하기 위함!기존에는 약 120명 정도의 면접자들을 일일히 배정하는 불편함을 개선하기 위함! 1 - 2. 사용한 라이브러리다양한 조건을 만족하는 면접 배정을 위해 CSP Algorithm에 최적화된 Optaplanner 라이브러리를 사용했다!구글링 했을 때, Optaplanner 관련 글이 많이 없어서 조금 힘들었다. 2. 도식화 자료 2 - 1. Optaplanner 관리대상InterviewSlot- 면접이 가능한 하나의 `날짜+시간` 단위를 나타냄.- 추후 InterviewSchedule의 필드로서 @ValueRangeProvider를 사용..
OOP의 4가지 특징
·
기술 세미나
0. OOP 4가지 특징객체 지향 프로그래밍의 4가지 특징에 대해서 코드와 함께 이해할 수 있도록 교육 자료를 만들어봤습니다! 1. 시작
Logback, ELK 구축하기
·
Spring
0. 개요저번 포스팅에서는 Logback.xml 설정을 통해 로그 정보를 Console과 File 형태로 적재하는 방법을 알아봤다! 졸업 프로젝트를 개선하는 과정에서 Kafka 그리고 Log MicroService를 도입해봤다.카카오 서버 개발자분에게 이 파이프라인이 어떤 지 피드백 받았었다. Log를 Kafka로 보내는건 좋은데, 이를 다시 Log MicroService가 받아서 처리하는 과정이 어색하다고 말씀하셨다.본인 부서에서는Kafka에서 바로 Log 적재 시스템에 Log를 보낸다고 하셨다.또한 현업에서는 RDB에 Log를 적재하는 일이 거의 없다고 하셨다.내가 알기론 데이터가 10만개가 넘어갈 경우 RDB와 NoSQL의 삽입 성능은 엄청난 차이가 난다고 알고 있고, Log는 데이터의 수가 상당히..
LogBack 사용하기
·
Spring
0. Log의 중요성 Tave 공식 프로젝트에서 오픈 전에 사전 알람 메일이 발송되는 이슈가 있었다.문제는 이 상황을 3일 뒤에 발견했다는 것.... 벌어진 건 벌어진 건데.... 이를 어떻게 수습해야할까??우선 누구에게 이메일을 보냈는 지 확인하고 사과 메일을 보내야 할텐데.... 기록이 없었다...! CloudWatch를 이용해서 에러 Log를 관리하고 있었지만 메일 단체 발송은 너무 잘 동작해서 CloudWatch에도 찍히지 않았당...우리는 Logback을 적용하고 있었지만 제대로 활용하고 있지 않았당....다행이 AWS SES에 기록이 남아있었다. LogBack을 좀 더 제대로 공부하고 프로젝트 운영에 중요한 정보를 Log에 남기는 게 정말 중요하다고 느꼈다...! 1. LogBack 이란Lo..
2025 하반기 ICT 인턴십 코딩테스트 후기
·
일상
1. 코딩테스트ICT 학점 연계 인턴십 기업 3곳 서류를 넣었다.상반기에는 건방지게 한 곳에만 서류를 넣었다가 광탈했다. (알고보니 필수 제출 서류 3개 중 하나만 냈더라...)이번에는 코테 필수 기업 한 군데, 필수 아닌 기업 두 군데에 지원했다.그래서 코딩테스트를 봐야함! 2. 결론역대급 준비 안한 코테 + 어려웠음. + 시간 초과를 잘 고려해야했음.프로젝트 때문에 코테 준비를 못함... + 게으름하반기에는 며칠간 코테만 풀면서 감을 쌓았는데....준비를 안해서 그런지 더 어렵게 느껴졌다. 솔직히 마음만 먹으면 GPT 돌릴 수 있을 거 같은데.... 어떻게 풀지 감도 안오는 문제 GPT로 풀어봤자 면접 때 들통날거같아서 그냥 안썼다. 3. 문제문제 종류를 구별하고 싶은데 어려워서 이게 맞는 지도 ..