Back-end Developer/Server, Spring
-
N+1 문제와 Fetch joinBack-end Developer/Server, Spring 2025. 9. 9. 01:46
N+1 문제란 무엇인가?ORM에서 연관된 데이터를 조회할 때 1번의 쿼리로 가져올 수 있는 데이터를 N개의 쿼리로 가져오게 되어 성능 저하를 일으키는 문제입니다. 1:N 연관 관계에서 1에 해당하는 테이블(A) 데이터를 N의 테이블(N) 기준으로 조회시 DB에서 쿼리를 실행하는 것과 다르게 프로그램 내에서 A에 연관된 B의 데이터도 모두 함께 조회되는 것을 의미합니다. 더보기B테이블에서 A에 해당하는 데이터를 조회하려 할 때, A에 해당하는 데이터만 가져오는 것이 아닌 A에 연관된 B의 데이터 모두를 조회하는 문제Query: SELECT * FROM B WHERE A.id=1?; 즉, 1의 해당하는 데이터 10개 조회 했을때, 10 * N 개의 쿼리가 추가로 발생하게 됩니다. 이에 따라 실제로 조회하려던..
-
Spring Web MVCBack-end Developer/Server, Spring 2021. 4. 7. 18:46
MVC는 다들 아실 텐데... Spring MVC는 뭘까요? MVC 패턴을 모르신다면, 검색해서 간략히 알아보시길 바랍니다 단순히 생각해보면 Spring 에서 MVC 패턴 구성을 위해 지원하는 기능들이라 볼 수 있겠습니다. Spring MVC는 Dispatcher Servlet이 중심이 되어 구성됩니다. 두 용어의 정의를 알아보고 실제 구성은 어떻게 되고 어떻게 동작하는지 알아보도록 하죠. Spring MVC 'Model-View-Controller'의 약자로 기본 시스템 모듈을 MVC로 나누어 구현 및 처리 Dispatcher Servlet을 중심으로 구성되어 있으며 사용자로부터 들어오는 요청을 핸들러에 매핑하고, 뷰로 반환하는 등의 작업을 지원 Dispatcher Servlet Servlet Cont..
-
MSABack-end Developer/Server, Spring 2021. 3. 24. 14:56
MSA...MS.... Micro soft..? 이번 포스팅은 MSA 관련 개념과 왜 필요한지 알아보려 합니다. MSA (Microservice Architecture) 단일 응용 프로그램을 나누어 작은 서비스의 조합으로 구축하는 방법 비즈니스 도메인을 중심으로 모델링된 소규모 자율 서비스 모음으로서 애플리케이션을 구성하는 아키텍처 스타일 어떤 의미인지 완벽하게 와닿진 않습니다만, 'Micro'한 'Service'를 의도한다는 것 쯤은 알 수 있습니다. 왜 MicroService가 등장하게 되었는지, 기존엔 어떤 방식이었는지 하나씩 알아 보겠습니다. 기존 서비스는 MonolithicService 입니다. Monolithic의 사전적 정의는 아래와 같습니다. 1. 하나의 암석으로 된 2. 단일체의, 한 덩..
-
RestTemplate & URLConnectionBack-end Developer/Server, Spring 2020. 10. 30. 18:57
이번 공모전을 진행하며 사용한 URLConnection과 RestTemplate에 대해 정리합니다. 위의 두 가지 클래스를 살펴보기 전에 우선 HTTP 특징에 대해 알고 가는 것이 좋습니다. HTTP HTTP(HyperText Transfer Protocol)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3 부터는 UDP를 사용하며, 80번 포트를 사용한다. 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었다. HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그..
-
RPC (Remote Procedure Call)Back-end Developer/Server, Spring 2020. 10. 29. 18:38
오늘은 제가 SW maestro 10기에서 적용한 thrift 즉, RPC에 대해 정리해보려 합니다. -> 아직은 부족한 게 많아 지속적으로 수정될 예정입니다. 막상 사용하는 것 자체는 찾아보면 쉽게 할 수 있습니다. (generate code를 통해 생성하기 때문에 매우 편리합니다.) 하지만, 제대로 된 개념을 아는 것은 좀 다른 문제겠지요. RPC 원격 프로시저 호출(remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술이다. 다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있..
-
REST API (2)Back-end Developer/Server, Spring 2020. 7. 19. 17:22
REST API(1)에 이어서 Uniform Interface에 대한 내용을 살펴보겠습니다. 2020/07/17 - [Study/Java(OOP) & others] - REST API (1) REST API (1) API 개발을 해보신 분들이나, 졸업 작품을 해보신 분들은 한 번쯤 들어봤을 내용이라 생각합니다. REST API, RESTful API 등으로 불리고 있고 해당 내용은 몇 번을 강조해도 지나치지 않습니다. 이미 나 exponential-e.tistory.com Uniform Interface Identification of resources Manipulation of resources through representations Self-descriptive message Hypermedia..
-
REST API (1)Back-end Developer/Server, Spring 2020. 7. 17. 16:54
API 개발을 해보신 분들이나, 졸업 작품을 해보신 분들은 한 번쯤 들어봤을 내용이라 생각합니다. REST API, RESTful API 등으로 불리고 있고 해당 내용은 몇 번을 강조해도 지나치지 않습니다. 이미 나온지는 꽤 오래되었고, 제가 처음 이에 대해 들은 건.. 16년도 쯤 같습니다. 그땐 뭐가 뭔지 잘 이해하지 못했지만, 개발 경험과 여러 자료를 지속적으로 읽어보고 찾아본 끝에 알 수 있게 되었습니다. 특히 네이버 Deview 2017에서 이응준님께서 발표하신 그런 REST API로 괜찮은가 영상은 꼭 보시라고 말씀드리고 싶습니다. (이 글도 해당 영상의 내용을 참고하여 정리했습니다.) REST가 저에게 제대로 스며들기 시작한 영상이고 계속해서 시간 날 때마다 이 영상을 보고 생각하고 공부하고..
-
AOPBack-end Developer/Server, Spring 2020. 6. 29. 19:39
본 포스팅은 Spring docs 내용을 기준으로 정리된 글입니다. 좀 더 자세한 내용은 해당 링크를 참고해 주세요. 일반적으로 관점이라 하면, 사람의 관점은 서로 다르다. 어떻게 보느냐에 따라 다른 결과가 나타난다. 뭐 이런 이야기를 많이 합니다. 하지만 AOP에서 쓰이는 용어들은 직관적인 의미와는 약간 상이한 뜻을 가집니다. (물론 관점을 여러가지로 고려해본다는 의미와는 꽤나 상통합니다.) 따라서, 용어에 대한 혼동을 가져올 수 있으니 주의하시기 바랍니다. AOP (Aspect Oriented Programming) 관점 지향 프로그래밍이라고 불립니다. AOP는 프로그램 구조에 대한 견해를 조금 다른 방식으로 접근해 OOP를 보완합니다. OOP의 핵심 모듈화 단위는 class인데, AOP의 핵심 모듈..