전체 글
-
[JPA] 알쓸지카테고리 없음 2024. 2. 28. 12:17
Named QueryApplication Loading 시점에 파싱을 해서 들고 있는 과정에서 Query 검증이 가능하다.Mybatis를 사용할 때, 쿼리의 검증을 Test를 통해서 하거나, 실제로 Controller API를 찔러서 확인했었을 때가 있었는데, 이와 같은 Query 문법오류를 방지할 수 있어서 굉장한 듯 하다. 벌크연산JPQL로 insert, update, delete를 날리면 DB에 직접 반영되기 때문에 영속성 컨텍스트를 초기화 해주어야 오류가 없다.영속성 컨텍스트를 초기화 후, 재조회 하여야 DB의 데이터와 일관성 있는 Entity를 사용 가능하다. Fetch Join 최적화 (대부분의 성능 문제 해결)Repository에는 순수한 Entity만을 조회하는 용도의 메서드만 생성Enti..
-
[네트워크] 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기(3)CS 2023. 4. 17. 12:04
2023.01.27 - [CS] - [네트워크] 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기 2023.02.26 - [CS] - [네트워크] 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기(2) 이전 시간에 택배 배송과정을 통해 데이터의 흐름을 알아보았다. 현실에 빗대어 표현한 것이기 때문에, 네트워크에 대한 정보가 약간 빈약하다고 느낄 수 있었는데, 그래서 이번 시간에는 각 계층의 캡슐화가 어디에서 일어나며, 네트워크에서 캡슐화된 데이터를 이용해 어떤일이 가능한지에 대해 작성해보았다. 가장 대중적이고, 현재 네트워크 세계에서 가장 많이 쓰이는 TCP/IP모델을 통해 알아 볼 것이다. 다음 글에서는 비유적인 표현은 최대한 줄이고, 네트워크 관련 용어들을 많이 사용하여 작성해 볼 것이다! 주니어 개발자..
-
[네트워크] 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기(2)CS 2023. 2. 26. 11:55
네트워크에 대한 내용을 시리즈로 연재하고 있다. 이번 2편의 내용은 계층이라는 것이 무엇인가? 계층을 구분하기위해 캡슐화를 진행하는데, 그럼 캡슐화는 왜 하는 것인가? 에 대해 택배를 보내는 과정을 통해 설명해보았다. 네트워크를 검색해서 공부해보면, 그냥 OSI 7계층, TCP/IP모델 (4계층) 이라고만 하고 "응용, 전송, 인터넷, 네트워크 액세스 계층이라고 나누어져있고 각각 특징은 이러이러하다." 라고만 설명이 되어있는것이 대부분일 것이다. 그래서 왜 계층을 나눴지? 계층을 나눈 기준점은 무엇이며, 계층을 나누어 캡슐화하는 목적은 무엇인지가 나는 공부할 때 궁금했다. 이것을 설명하려면 네트워크란 것이 생기게 된 역사와, 프로토콜의 발전등, 배경지식으로 가지고 공부해야했는데, 솔직히 업무에 당장 도움..
-
[네트워크] 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기CS 2023. 1. 27. 00:01
최근에 회사에 학원출신의 신입분들이 많이 들어와서, 어떤 것을 알려드리면 도움이 될까? 하다가 CS 지식 중 흥미로우면서 필요한 지식인 "네트워크"에 관해서 글을 써보기로 했다. 사실 신입 때, 업무를 받게되면 그다지 네트워크에 대한 지식이 직접적인 도움을 주진 않겠지만, 주니어를 넘어 중니어로 가기위해서는 필수 지식이 아닐 수 없다. 이미 클라우드라는 단어도 엄청나게 많이 접할 수 있고, 최근에 모놀로틱한 환경들도 다 AWS, GCP와 같은 클라우드 환경으로 옮겨가고 있는 것이 추세고, AWS를 사용하는 것에도 VPC, 보안그룹과 같은 네트워크와 직접적으로 연관이 되어 있는 설정들이 있는 만큼, 알아두면 시야가 넓어진다고 해야할까? 매우 유용함은 틀림 없을 것이다. 최근에 좋은 기회로 요즘IT에 글을 ..
-
[MariaDB] ColumnStore Engine - Row-Oriented, Column-Oriented인프라/Database 2022. 3. 23. 23:39
들어가기 앞서 대량의 데이터를 저장해야하는 Database 는 보조기억장치에 저장됩니다. CPU - 레지스터 - 캐시 - 메모리 - 보조기억장치 CPU가 명령어를 실행하고 연관된 데이터를 가져오려면 대략적으로 위와같은 단계로 가져옵니다. 가장빠른 레지스터와 가장 느린 보조기억장치 사이에는 엄청난 속도의 차이가 있고, CPU가 동작할 때는 네트워크도 마찬가지지만 가장느린 속도에 Sync를 맞추게 되어있습니다. 느린 보조기억장치에서 데이터를 얼마나 자주 가져오지 않느냐가 컴퓨터의 속도를 결정합니다. 그래서 용량은 적고 속도는 빠른 기억장치들에 데이터를 Cache 해놓고 CPU가 보조기억장치에 최소한으로 접근하도록 하는것이 관건입니다. 제가 경험해본 바로는 중복된 빅데이터의 집계를 낼 때 Row-Oriente..
-
[MariaDB] ColumnStore Engine 회고인프라/Database 2022. 3. 13. 23:44
이력서 업데이트하는 과정에서 과거의 경험을 회고하고자 게시글을 쓴다. 2019년 첫 SI회사에서 KBS 시청률 통계 관리자 사이트를 개발할 당시, 기존 MariaDB 통계 테이블 InnoDB Engine에서 억단위의 데이터를 통계내다보니 속도가 너무 느려 ColumnStore Engine 으로 마이그레이션 했던 프로젝트가 있었다. 얼떨결에 신입으로 혼자 삽질을 해가며 서버구축(ColumnStore 설치도 포함)부터 프로젝트 마무리까지 했었는데, 그 당시에는 별 생각이 없었지만 지금 돌이켜보면 좋은 경험이었다. 결론부터 말하면 월 단위 통계쿼리가 16초 -> 0.1초로 개선되었다. 같은 날짜에 여러 플랫폼에서 들으어오는 시청률, 시청자 수 데이터를 집계하는 쿼리였었다. 예를들어 10월 1일에 시청률, 시청..
-
면접을 부르는 개발자 이력서 쓰기공부/이력서 2022. 3. 2. 22:51
내 이직 목표에 맞는 '개발 역량' 확보가 우선! JD (Job Description) 파악! 포트폴리오 Github, Blog 를 디테일하게 숫자로 작성하자. (개발 역량에 관련된 것들 위주로) JD에 부합하는 기술 키워드 노출, 면접관이 관심 가질 만한 내용 요약 3 ~ 4개 정도 보유기술 상중하, 1~5 수준 표시는 절대 x, 사용해본 기술을 요약하여 어느정도범위까지 해보았다 까지 작성 단순 회사/서비스/직무를 적는건 안된다. 내가 개발한 서비스에 대한 설명, 어떠한 기술셋을 사용하였는지 기술! 프로젝트 기간, 역할, 규모, 내용, 역할 명확히 표현
-
자동차 경주 게임 피드백 영상 시청 후공부/자바 플레이그라운드 with TDD, 클린코드 2022. 3. 2. 22:07
테스트하기 어려운 부분을 찾아 가능한 구조로 개선 Object Graph에서 다른 Object와 의존관계를 가지지 않는 마지막 노드를 먼저 찾는다. RacingMain -> RacingGame -> Car 같이 마지막인 Car를 먼저 한다. 또한 Car에 Random값에 의존성이 있다면 상위 Object로 올려서 하위 Object를 테스트 할 수 있도록 한다. getRandomNo 메서드를 protected로 변경 후 test코드에서 new Car {} 를 통해 override 해서 getRandomNo를 재정의하여 테스트도 가능하다. 하지만 장기적으로는 리팩토링을 통해 해결하자. 테스트는 경계값으로 하는것이 좋다. move가 되려면 4이상이라는 요구사항이면 3 과 4가 경계값 미리 예측을 하여 과도한 ..