[코드잇][위클리페이퍼][12주차]
·
카테고리 없음
12주차 위클리페이퍼 주제이다.애플리케이션의 각 계층에서 수행되는 입력값 검증의 범위와 책임을 어떻게 나눌 것인지에 대해 설명해주세요. 특히 중복 검증을 피하면서도 안정성을 확보하는 방안과, 이와 관련된 트레이드오프에 대해 설명해주세요.테스트에서 사용되는 Mockito의 Mock, Stub, Spy 개념을 각각 설명하고, 어떤 상황에서 어떤 방식을 선택해야 하는지 구체적인 예시와 함께 설명하세요.1. 각 계층 별 입력값 검증의 범위와 책임애플리케이션의 각 계층이란?현대의 애플리케이션은 복잡성을 제어하기 위해 MVC 패턴과 계층형 아키텍처라는 기술을 사용한다. 이후 모바일 시장이 등장하면서 클라이언트의 역할이 중요해지고, 서버와 클라이언트를 분리하는 클라이언트(SPA) - 서버(API) 아키텍처로 변화한다..
[코드잇][위클리페이퍼][11주차]
·
카테고리 없음
초급 프로젝트가 끝나고 오랫만에 돌아온 위클리페이퍼이다.JPA에서 발생하는 N+1 문제의 발생 원인과 해결 방안에 대해 설명하세요.트랜잭션의 ACID 속성 중 격리성(Isolation)이 보장되지 않을 때 발생할 수 있는 문제점들을 설명하고, 이를 해결하기 위한 트랜잭션 격리 수준들을 설명하세요.1. JPA에서 발생하는 N+1 문제의 발생 원인과 해결방안JPA에서 N+1은 실제로 많은 개발자들이 JPA를 사용할 때 마주치는 문제이다. 그렇다면 N+1이 무엇일까?사실 1+N이라고 보는게 조금 더 이해하기 쉬울 것이다. 하나의 쿼리를 실행하면 그 쿼리에서 추가적으로 N개의 쿼리가 발생하기 때문에 1+N, 즉 N+1이라고 하는 것이다.말로만 하면 별로 와닿지 않을 것 같으니 N+1의 예시를 보여주겠다.N+1이..
[코드잇][초급프로젝트][Findex] 프로젝트 개인 개발 리포트
·
카테고리 없음
1. 프로젝트 개요프로젝트 목적: 가볍고 빠른 외부 API 연동 금융 분석 도구프로젝트 핵심 기능: 금융위원회 OpenAPI 연동, 지수 정보 및 데이터 제공, 시각화 대시보드, 자동 연동 스케줄링2. 담당한 작업- R&R: 지수 데이터 관련 담당 - 공통 작업1. 스키마 및 ERD 작성 - 개인 작업1. 지수 데이터 CRUD 구현2. 지수 데이터 다운로드(CSV) 구현3. 기술적 성과- 기술스택Framework: Spring BootDatabase & ORM: PostgreSQL, Spring Data JPADocumentation: springdoc-openapi (Swagger)Scheduling: Spring SchedulerUtility: MapStruct, QueryDSL배포 및 협업: Rai..
[코드잇][위클리페이퍼][8주차] SQL문과 역정규화
·
카테고리 없음
위클리페이저 8주차 주제이다.SQL에서 DDL과 DML의 차이점을 설명하고, 각각의 대표적인 명령어들의 용도를 설명하세요.역정규화가 필요한 상황과 적용 시 고려해야 할 사항, 그리고 역정규화를 적용할 때의 장단점을 설명해주세요.이번 포스팅은 둘다 RDBMS와 연관되어 있는 주제이기에 한 포스팅에 담으려고 한다. SQL (Structured Query Language)은 한글로 번역하면 구조적 질의어 라는 뜻으로, 관계형 데이터베이스에서 구조화된 데이터를 저장하고 처리하는 등 관리하는데 사용하는 언어이다.이 SQL은 4가지로 분류할 수 있다.DDL(데이터 정의어): CREATE, ALTER, DROP, TRUNCATE, RENAMEDML(데이터 조작어): SELECT, INSERT, UPDATE, DELE..
[코드잇][위클리페이퍼][7주차] @Restcontroller와 HTTPMessageConverter
·
카테고리 없음
아래는 7주차 위클리페이퍼 두 번째 주제이다.Spring Boot에서 @RestController로 들어온 HTTP 요청이 처리되어 응답으로 변환되는 전체 과정을 설명하세요. 특히 HTTP 메시지 컨버터가 동작하는 시점과 역할을 포함해서 설명하세요.스프링부트로 웹 API를 만들때 컨트롤러에 @RestController를 사용한다. 왜 우리는 @Controller 대신 @RestController를 사용할까? 그 이유는 웹 아키텍처의 패러다임의 변화이다. 과거 전통적인 웹 개발 환경에서는 서버가 화면까지 모두 반환하는 서버 사이드 렌더링 방식이 주를 이뤘다. JSP나 Thymeleaf와 같은 템플릿 엔진을 사용해 핸들러 메서드의 반환값을 Model에 담아 View와 결합했다. 하지만 현대로 넘어오면서 모바..
[코드잇][위클리페이퍼][7주차] SOAP에서 REST로의 전환
·
카테고리 없음
아래는 7주차 위클리페이퍼 첫 번째 주제이다.웹 API의 발전 과정에서 SOAP에서 REST로의 전환이 일어난 이유와 그 장단점에 대해 설명하세요먼저 웹 API란, 웹(네트워크)을 통해 서로 다른 애플리케이션이 데이터를 주고받을 수 있도록 정의된 약속이다. 우리가 흔히 접하는 예로는 프론트엔드(클라이언트)가 백엔드(서버)의 API를 호출하여 데이터를 주고받는 구조가 있다. 1. 과거의 웹 API: 엔터프라이즈 시스템 통합 그러나 과거에는 지금처럼 브라우저나 모바일 기기와 서버 간 통신이 주요 목적이 아니었다. 웹 API의 목적은 이기종 엔터프라이즈급 시스템을 연결하는 것이었다.예를 들어은행사 A는 Java보험사 B는 .NET카드사 C는 C++로 작성된 엔터프라이즈 애플리케이션을 사용한다고 가정하자.이때..
[코드잇][위클리페이퍼][6주차] Spring AOP의 필요성과 실제 사례
·
카테고리 없음
6주차 위클리페이퍼의 첫 번째 주제이다.Springo| AOP(Aspect Oriented Programming)가 필요한 이유와 이를 활용한 실제 애플리케이션 개발 사례에 대해 설명하세요. 먼저 AOP에 대해서 기본 개념을 설명하자면 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라는 뜻으로, 공통 관심사 (Cross Cutting Concern)를 비즈니스 로직과 분리하는 기술이다. AOP가 필요한 이유는 핵심 비즈니스 로직 이외에 공통으로 필요한 기능(공통 관심사)를 한 곳으로 모아서 적용하므로 다음과 같은 장점이 있기 때문이다.코드 중복 방지: 공통적으로 반복되는 기능을 한 곳으로 모아서 중복 제거일관성 유지 및 유지보수성 향상: 공통 기능이 다르게 작동하지 않고..
[코드잇][위클리페이퍼][5주차] Web Server와 Web Application Server
·
카테고리 없음
5주차 위클리페이퍼 주제이다.웹 서버(Web Server)와 WAS(Web Application Server)의 차이를 설명하고, Spring Boot의 내장 톰캣이 이 둘 중 어디에 해당하는지 설명해주세요.Spring Boot에서 사용되는 다양한 Bean 등록 방법들에 대해 설명하고, 각각의 장단점을 비교하세요.현재 포스팅은 첫 번째 주제에 해당한다. 웹 서버란 HTTP 프로토콜을 통해 인터넷을 사용하는 사용자에게 요청을 받아 응답(웹 서비스)을 제공하기 위한 서버이다. 우리가 인터넷을 사용하면 가장 먼저 하는 일이 무엇인가? 바로 주소를 입력하는 것이다. 바로가기 아이콘을 눌러서든 직접 URL을 입력하든 주소창에 우리가 이용할 웹사이트의 주소를 입력한다.예를 들어 네이버를 생각해보자. www.nave..
[코드잇][위클리페이퍼][4주차] 프레임워크와 라이브러리의 차이점
·
IT/코드잇
아래는 4주차 위클리페이퍼 주제이다.Spring Framework가 탄생하게 된 배경과 이를 통해 해결하고자 했던 문제점에 대해 설명하세요.프레임워크와 라이브러리의 차이점을 제어 흐름의 주체와 사용 방식을 중심으로 설명하고, Spring Framework와 일반 Java 라이브러리를 예시로 들어 설명하세요.이번 포스팅에서는 두 번째 주제에 대해서 다룬다. 우리가 코드를 작성할 때 이미 작성된 코드를 다른 곳에서 재사용하려면 복사 붙여넣기를 통해 사용할 수 있다. 그러나 개발자라면 복사 붙여넣기가 아닌 함수를 통해 반복되는 작업을 줄일 것이다. 더 나아가, 내가 만든 함수뿐만이 아니라 남이 만들어 놓은 코드를 사용할 수도 있다. 이러한 것을 보고 '라이브러리' 또는 '프레임워크'를 사용한다고 한다. 둘다 ..
[코드잇][위클리페이퍼][4주차] Spring Framework의 탄생 배경
·
IT/코드잇
아래는 4주차 위클리페이퍼 주제이다.Spring Framework가 탄생하게 된 배경과 이를 통해 해결하고자 했던 문제점에 대해 설명하세요.프레임워크와 라이브러리의 차이점을 제어 흐름의 주체와 사용 방식을 중심으로 설명하고, Spring Framework와 일반 Java 라이브러리를 예시로 들어 설명하세요.이번 포스팅에서는 첫 번째 주제에 대해서 다룬다.이번 주제는 스토리텔링 방식으로 서사를 나열하려고 한다. 혹독한 겨울을 지나, 봄(Spring)이 오다 스프링 프레임워크라는 이름에는 단순히 '봄'이라는 계절 이상의 의미가 담겨있다.바로 EJB(Enterprise JavaBean)이라는 혹독한 겨울에서의 해방이라는 의미를 가지고 있다.도대체 EJB가 무엇이고 어떤 문제점이 있길래 혹독한 겨울이라고 불렸..