우아한테크코스

우아한테크코스

"[DB] 대량의 데이터를 DB에 넣는 과정을 최적화해보자"

안녕하세요 우아한테크코스 카페인팀 누누입니다 이번에는 대량의 데이터를 DB에 넣는 과정을 최적화하는 과정에서 알게 된 내용을 공유하려고 합니다 이번 최적화의 목표 전기차 충전소에 대한 공공 데이터를 가져오고, 그 데이터를 DB 에 넣는 과정을 최적화해보자 대량의 데이터를 삽입하는 과정 저희 팀의 요구사항을 간단하게 정리하면 다음과 같습니다 대량의 데이터를 공공 데이터에서 전기차 충전소와 전기차 충전기에 대한 데이터를 가져온다 충전소는 6만 개, 충전기는 23만 개의 데이터가 존재한다. 한 번에 가져올 수 있는 양은 9999개 까지다. 이 데이터를 DB에 넣는다 충전소와 충전기는 1:N 관계이다 최적화 전은 어떤 상황이었는데? 위 사진을 잘 보시면 아실 수 있으시겠지만, 2000개를 저장하는데, 231.7..

우아한테크코스

"pr 본문에 이슈 번호를 달아주는 기능을 만들었습니다"

안녕하세요 우테코 카페인팀 누누입니다 빠르게 결과부터 보고 가시죠 어떤 결과가 나왔나요? pr의 본문 끝에, 연관된 이슈 번호를 달아주는 기능을 만들었습니다. 밑에 사진을 보시면 쉽게 이해하실 수 있을 것 같습니다. github에서 issue 번호가 pr에 담겨있다면 2가지 장점이 생기는데요. issue를 클릭했을 때, 자동으로 그 issue로 넘어갈 수 있습니다. (호버만으로 이슈에 대한 간단한 정보를 볼 수 있습니다) pr 이 merge 되었을 때, 자동으로 issue 가 close 됩니다. 이 과정을 손으로 진행하는 것보다, 자동으로 진행하게 되면 실수도 줄어들고, 개발 과정이 편해질 것 같아서 이 기능을 제작하게 되었는데요 중요한 점 이 과정을 진행하려면 밑에서 소개해드릴 브랜치 네이밍 규칙이 필..

우아한테크코스

[레벨3] 프로젝트 1주차 회고

프로젝트에 대한 소개 프로젝트 주제를 1 문장으로 표현하면? 원하는 전기차 충전소를 편하게 찾을 수 있는 서비스 or 실시간 전기자동차 충전소 지도 및 사용 통계 조회 서비스 어떤 문제를 해결하려고 이 프로젝트가 시작되었는가? 전기차 충전소가 너무 많은데, 사용자가 진짜 원하는 조건의 충전소를 찾기 어려워요 사용자가 필요로 하는 정보가 생각보다 많은데, 이 부분을 보기 편하게 만들어준 웹이나 앱이 거의 없습니다. 사용자가 원했던 정보들은 이런 것들이 있었는데요 충전기의 타입을 알고 싶어요 급속, 완속 이라고 하는 충전 방식에 따라 충전 속도가 달라지고, 배터리 수명이 달라집니다. 충전기 타입이 많아서 어댑터가 없는 경우라면 특정 타입의 충전기만 사용할 수 있습니다 충전소마다 혜택이 달라요 특정 충전소에서..

우아한테크코스

DB 에 변경된 부분만 업데이트 하려면(feat Proxy 객체, 변경감지)

JPA를 사용하지 않으면 어떻게 변경 감지를 해야 하지?? 변경감지는 어떻게 만들어져 있을까 생각해 보면서 작성한 코드이기에, 부족한 점이 많을 수 있습니다 나왔던 코드는 대부분 간소화된 코드입니다! 미리 잘 부탁드립니다 간단한 테이블 소개 노선과 구간이 1:N의 관계로 엮여있습니다 역과 구간이 1:N의 관계로 2번 엮여 있습니다 단 3개의 테이블만으로 이루어진 간단한 상황이라는 것을 기억해 주시면 좋을 것 같습니다 간단한 문제 상황 소개 처음에 코드를 짰을 때 도메인 엔티티에서 어떤 부분이 변경되어서 직접 저장해야 하는지를 파악할 방법을 쉽게 떠올리지 못해서, 가장 편한 방법을 거쳤는데요 도메인 엔티티를 변경하게 된 경우에, db에 저장하는 과정에서, 모두 삭제하고, 모두 새롭게 저장하는 과정을 거쳤습..

우아한테크코스

레벨 인터뷰 스터디

1. filter와 interceptor 필터는 dispatcher servlet 바깥에 존재합니다. 인터셉터는 dispatcher servlet 안에 존재합니다. 필터와 인터셉터의 예외 처리 방식 필터는 기본적으로 서블릿 컨텍스트로 예외가 흘러갑니다. 인터셉터는 ResponseEntityExceptionHandler 라는 Spring MVC에서 제공하는 기본 예외에서 모든 예외가 잡힙니다 interceptor에서 prehandle에서 false 가 나오면, postHandle, postComplete메서드가 호출되지 않는다' 필터와 인터셉터의 기능 차이 filter : ServletRequest, ServletResponse 를 바꿔 끼울 수 있다 interceptor : 어떤 컨트롤러에서 실행되는지 ..

우아한테크코스

레벨 인터뷰 스터디 준비

레벨 인터뷰를 준비하는 과정에서 만든 간단한 정리본입니다. spring bean scope란? 싱글톤 스코프 : 애플리케이션 컨텍스트의 스코프와 동일한 생명 주기를 가지고 있다. 프로토타입 스코프 : 매 요청마다 새로운 객체가 만들어진다 request : 웹의 요청하나마다 새로운 객체가 만들어진다 session : 브라우저의 세션 하나마다 새로운 객체가 만들어진다 application : 서블릿 스코프와 동일한 생명주기를 가지고 있다 transactional annotation 이란? 하나의 논리적 transaction 을 만들기 위한 어노테이션이다 물리적 transaction 이 없다면, 새로운 transaction을 만든다. @Transactional(readonly =true) db 의 트랜잭션 i..

우아한테크코스

우아한테크코스 레벨1 레벨로그 준비

레벨 1을 진행하면서 공부 및 경험한 것 Exception 자바 Exception 의 계층 구조 Throwable -> Exception -> RuntimeException Throwable -> Error Error 은 사용자가 정상적인 경우에는 복구가 불가능하다 CheckedException vs UncheckedException Throwable 의 하위클래스 중 Error 나 RuntimeException 을 상속하지 않는 경우가 다 Checked Exception 이다. Error 나 RuntimeException 의 하위 클래스에서는 UncheckedException 이다 Exception 이 성능에 안좋은 이유 Throwable 의 생성자를 확인해보면 무조건 StackTrace 를 전부 채우..

우아한테크코스

다른 사람의 리뷰를 훔치자

우아한테크코스의 진행 방법 우아한테크코스를 하게 되면 매주 미션이 주어지고, 그 미션을 혼자서, 혹은 페어랑 같이 진행하게 된다 각 미션에 대해서 리뷰어에게 피드백을 받을 수 있고, 질문을 받을 수 있다 더 다양하고, 깊은 리뷰를 받기 힘들다는 문제점 미션에 대한 최대한 많은 피드백을 받아보고 싶어도, 리뷰어에 시간이 한정되어있기에, 받을 수 없다 나만의 해결책 이를 해결하기 위한 나만의 방법으로 다른 사람들의 리뷰를 보는 시간을 갖곤 한다 각 미션별로 최소 50~60명정도의 리뷰를 보고 나면, 그 미션에 대한 공통적인 피드백도 눈에 들어오기도 하고, 저렇게 짜야되는구나 싶은 느낌이 드는 크루도 생기곤 한다 리뷰를 보고 나면 기억에 남는 리뷰들이 생기곤 하는데, 그 리뷰들을 나만의 저장 공간에 모아두려고..

우아한테크코스

[3주차 회고] 오리같이 살아보자

정말 부족함을 많이 느낀 한 주였고, 후회가 많았던 한 주였습니다 내가 무엇을 선택하는지에 따른 선택은 어마어마하게 크게 돌아온다는 것을 다시 한번 느끼는 한 주입니다 저는 특정 부분에 한해서는 성격이 정말 급한 편입니다 삶에 큰 의미를 가지지 않는 대부분의 일들은 한없이 느긋해지지만 제 삶에 있어서 중요한 부분이라면 너무 급해지기만 하는 경우가 정말 많이 나오는데요 이럴 때마다 너무 섣부르게 행동했던 하루하루를 후회하곤 하는데요 사람들을 만나고, 계속해서 대화하고 하는 과정은 좋아하지만, 사람과 대화하고, 떠드는 순간은 저에게 있어서 정말 많은 체력을 소모하는 순간이기도 합니다 우아한테크코스에서 계속해서 사람들과 대화하고, 떠들며 코딩을 하고 하는 과정을 하고 집에 가는 동안에는 너무 힘들어서 제대로 ..

우아한테크코스

[2주차 회고] 사다리 게임 페어 프로그래밍

우아한테크코스에서 진짜 아무것도 안 한 것 같으면서도 너무 많은 것들을 한 느낌이 드네요. 생각보다 시간이 빨리 지나가 버렸어요 우아한테크코스에서 1주일이 진짜 세상에서 제일 빨리 지나가는 것 같네요 회고를 적기로 결심했던 것은 정말 당행인 것 같네요. 1주일을 어떻게 보냈는지도 되돌아볼 수도 있는 것 같고 이번 주에 했던 실수를 쭉 되돌아볼 수도 있고, 다음 주차를 더 깔끔하게 만들려면 무조건 써야될 것 같습니다 이번주에는 저번주 미션 리팩토링을 했고, 2단계 페어프로그래밍을 진행했습니다 자동차 페어프로그래밍 리팩토링을 진행하면서 나왔던 부분들입니다 1. 입출력 어디까지 테스트해야 하는가? https://be-student.tistory.com/43 java에서 입출력 어디까지 테스트 해야할까요? 글을..

be-student
'우아한테크코스' 카테고리의 글 목록