Back End
-
[Spring Framework] Spring Framework + Maven + Tomcat 환경구축 (IntelliJ) (SpringBoot + Gradle 과 차이점)Back End/Spring Framework 2022. 4. 15. 10:24
학생 때 Spring Boot + Gradle + VSCode 환경만 사용했었는데 회사 업무에서 Spring Framework + Maven + Tomcat 환경으로 구성된 프로젝트의 유지보수를 맡게 되었다. IntelliJ 조차도 처음 써보기에 해당환경 세팅을 하는법을 기록해두기로 하였다. 1. [File -> New -> Project] 아래 사진과 같이 설정한다. Gradle 처럼 디펜던시 추가 설정 화면이 나오지 않고 바로 생성된다. (당황) 2. [루트 폴더 우클릭 -> Add Framework Support] 여기서 디펜던시를 설정한다. WebApplication, Spring MVC, Tomcat 정도만 추가하기로 한다. 이러고 확인을 누르면, 관련라이브러리를 다운받는 모습을 볼 수 있는데 ..
-
[JSP] Apache TilesBack End/etc 2022. 4. 13. 18:35
Apache Tiles 그 중에서도 리액트마냥 컴포넌트 단위로 작성할 수 있게 끔 해주는 라이브러리 templates 을 만들고 contents 를 채워가는 방식 상속을 이용하여 html 을 조립하고, 런타임 시 페이지들이 조각되어 만들어진다. Apache Tiles 의 상속 1. tiles-definition.xml 의 정의 해당 xml 에 으로 사용할 컴포넌트(.jsp)를 정의한다. 하위에 로 상속시킬 하위 컴포넌트(.jsp)들을 입력한다. * put-attribute 에 입력한다고 html 에 자동으로 컴포넌트가 추가되는게 아니다. * 실질적인 호출이 있기 전까지는 html 에 추가되지 않는다. > [tiles-definition.xml] 2. 상속받은 컴포넌트의 호출 dashboard 는 base..
-
[AWS] Mac Homebrew 를 통한 AWS CLI 설치 & IAM 설정Back End/AWS 2022. 4. 12. 23:02
# AWS CLI 설치 brew install awscli # 설치 후 AWS CLI 를 통한 IAM 설정 aws configure 해당 커맨드를 입력후 AWS Key ID : [AWS Console IAM 에서 발급받은 Key ID] AWS Secret Access Key : [AWS Console IAM 에서 발급받은 Secret Access Key] Default region name : [원하는 디폴트 리전] Default output format : [원하는 Response 포맷] (json, xml 등) # IAM 설정 확인 AWS config 및 credential 확인 cat ~/.aws/config cat ~/.aws/credentials
-
[리팩토링 보고서] JPA 쿼리 성능 최적화Back End/리팩토링 보고서 2022. 3. 5. 02:27
이 포스팅은 삽질 경험을 바탕으로 정리하였습니다. 더 나은 옵션이 있을 시 계속 업데이트 됩니다. 목차 1. Query(Read) Rule 2. 성능개선 내역 Query RULE. 1. xToMany 변수를 가지지 않은 엔티티 JPA QueryMethod(Interface-Projection, UnderScore Join)로 Query한다. API 스펙변화가 Repository까지 전파되지 않아 코드 재사용성이 좋아진다. 원하는 필드만 select하여 네트워크 비용을 소폭 감소시킨다. 2. xToMany 변수를 가진 엔티티 JPA의 Fetch Join 기능을 이용한다. (QueryDSL, @EntityGraph, @BatchSize) 2-1. xToMany 변수가 2개이상 일때 xToOne 을 먼저 모두..
-
[리팩토링 보고서] 서버과부하 방지를 위한 Batch 처리Back End/리팩토링 보고서 2022. 3. 5. 00:26
이 포스팅은 리팩토링 될 때마다 업데이트 됩니다. 북마크 추가/변경/삭제와 같은 많은 가벼운 I/O 의 발생을 효율적으로 처리하고 싶었다. 당시에는 Spring Batch 도 ServerSide Global Caching 전략도 몰랐었다. (그저 서버에서 많은 데이터를 들고 있으면 OOM이 일어나겠지라고 생각했었다.) 그래서 생각해낸게 브라우저(React)단에서 5분간 이벤트 발생을 기록해두었다가 한번에 서버에 요청 하는 방식이었다. 회고록에서도 언급했었지만, 너무 비효율적인 방식이었다. (그리고 책임회피였다..) 일단 하나의 브라우저에서 발생된 이벤트밖에 처리를 못해 모아둔 이벤트의 양이 적을 뿐더러, 여러 유저에 대한 Batch 처리를 못한다는 단점이 있었고 두번째로 브라우저에게 책임을 돌렸기 때문에..
-
[Spring JPA] @MappedSuperClass 사용시 주의할 점Back End/Spring Data JPA 2022. 3. 4. 22:03
필자는 처음 JPA를 패스트캠퍼스에서 간단하게 배웠다. 그 중 @MappedSuperClass 가 있었는데 누가봐도 상속을 이용하여 생산성 좋은 코드를 만들 수 있는 매우매우 좋은 기능이었다. 강의의 예제에서 @MappedSuperClass 가 붙은 추상클래스에 엔티티의 ID 필드를 작성하셔서 사이드프로젝트 초기에 당연히 추상클래스 필드에 ID필드를 넣었다. 이로 인해 매우 귀찮았던 썰을 풀어본다. * 참고로 개인적으로 JPA 스터디에 참여하면서 영한님 강의를 수강하게 되었는데, 영한님은 내가 겪은 사항을 미리 경고하시고 ID필드를 넣지 말기를 권고 하셨다. (호엥...) 한국인은 본론 먼저! @MappedSuperClass 의 추상클래스에 @Id 필드를 절대 넣지말자. @Id를 가진 필드를 넣게 되면 ..
-
[리팩토링 보고서] 일급 컬렉션의 적용Back End/리팩토링 보고서 2022. 3. 4. 21:07
> 일급컬렉션의 필요성 (이동욱님의 블로그) 일급 컬렉션은 Collection을 Wrapping 하며 그 외 다른 멤버변수가 없는 클래스를 말한다. 일급컬렉션의 이점 1. Collection 의 불변성을 보장 2. 상태와 행위를 한 곳에서 관리 3. 비즈니스에 종속적인 자료구조로 코드흐름을 더욱 쉽게 파악가능 따라서 일급컬렉션을 적용하면 유지보수가 용이하며 용도를 분리하게 되어 더욱 객체지향적이게 된다. 프로젝트로의 적용 Summary. 코드 분리로 유지보수가 편리할 뿐만 아니라 불변성으로 인해 사이드이펙트를 최소화하여 협업에 용이 Item Domain @Entity @Getter public class Item extends BaseEntity implements Persistable{ /* field..
-
[리팩토링 보고서] API와 Repository 의존성 제거하기 (DTO-Repository 의존성 제거)Back End/리팩토링 보고서 2022. 3. 4. 17:06
리팩토링 진행마다 계속 업데이트 됩니다. * 버전 표기는 프로젝트 실제 버전이 아닌 의존성의 변화과정을 담기 위해 편의상 표기하였습니다. * v1.0 은 배포된 버전 입니다. (PocketMark) API 변경 시 DTO 만 수정해도 되도록 리팩토링 완료했습니다. API -> DTO -> Repository 에서 API -> DTO 로의 리팩토링 여행기입니다. > v1.0 바로가기 v1.0 의 장점 1. DTO->Repository 의존성 이 제거되어 API 스펙변경에도 끄떡없다. (코드 재사용성 매우 우수) 2. Spring Data JPA가 제공하는 Query Method 를 마음껏 편리하게 사용할 수 있어 신속한 쿼리작성이 가능하다. 3. Projection 이기 때문에 성능적으로도 우수 하다. 4..