Server
-
GraphQL API 왜 쓰는지 알아보기Server 2024. 4. 20. 00:48
GraphQL API란 무엇일까? 흔히 프런트는 화면에 뿌려줄 데이터를 서버로부터 받게 됩니다. 이때 RESTful API를 통해 데이터를 받게 됩니다. RESTful 함이란 uri에 동작이 명시되어 API를 요청할 때 결과를 예측가능하게 하여 원활한 협업을 위한 하나의 규칙입니다. REST API는 요청 당 하나의 스키마로부터 데이터를 응답받게 됩니다. 최근 앱은 하나의 화면이 여러 스키마들의 데이터로 구성되어 있기 때문에 비즈니스 로직에서 여러 스키마에게 REST API를 요청해야 합니다. 하지만 스키마의 모든 데이터가 화면을 구성하는 것이 아니기 때문에 화면에 구성될 데이터만 응답해줘야 했습니다. 이러한 배경에서 한번의 요청에서 필요한 데이터만 전달해 주는 GraphQL이 나오게 되었습니다. (Gr..
-
자바 애플리케이션 배포하는 방법Server 2024. 1. 3. 11:32
자바를 빌드하면 build 폴더 아래에 jar 파일이 생성됩니다. jar를 빌드할 때마다 덮어써집니다. jar 파일을 복사하여 서버로 사용할 컴퓨터에서 언제든지 사용 가능합니다. 자바가 설치된 운영체제에서 jar 파일이 존재하는 위치에서 java -jar 'jarname.jar' 이 명령어로 애플리케이션을 실행 시킬수 있습니다. [빌드 -> 빌드 후 생성된 jar 파일 --> jar 파일을 배포할 환경으로 전달 --> 배포] 이 과정은 기본적인 자바 애플리케이션 배포 메커니즘입니다. 주의할 것이 있다면, application파일 같은 정적인 파일도 같이 전달해줘야 합니다.
-
[Spring] Spring의 Ioc와 DIServer 2023. 6. 15. 16:56
Spring Ioc(제어역전)와 DI(의존성 주입)에 대한 이야기입니다. 일반적으로 자바에서 객체를 사용하기 위해 생성자 new을 사용하여 객체를 생성한 후 객체에서 제공하는 기능을 사용합니다. 아래 코드는 일반적인 자바의 객체 생성 방식입니다. @RestController public class Controller { private HelloService helloService = new HelloServiceImpl(); @GetMapping("/hello") public String hello() { return helloService.getHello(); } } 하지만 제어역전을 사용하는 스프링은 자바와 다르게 동작합니다. new 생성자로 직접 생성하지 않고 객체를 관리하는 외부로 돌립니다. 이때..
-
[Spring] Spring batch를 사용해보면서 (1)Server 2023. 5. 24. 15:09
이번 포스트는 Spring batch를 사용해 보면서 Spring batch를 중심으로 이야기해보려 합니다. 아래 링크 참조 spring batch 공홈 Spring Batch - Reference Documentation The reference documentation is divided into several sections: Spring Batch Introduction Background, usage scenarios, and general guidelines. Spring Batch Architecture Spring Batch architecture, general batch principles, batch processing strategies. What’ docs.spring.io 하나씩..
-
[Spring] Spring Batch를 사용해보면서Server 2023. 5. 19. 23:17
프로젝트에서 배치를 사용하게되면서 Spring batch를 적용해보면서 느낀점에 대해 정리한 글입니다. 매일 한국 시간 기준 오전 11시와 오후 1시에 서비스를 실행되어야 한다면 MVC 패턴에서 적용시 Controller 단에서 @Scheduled cron 식으로 스케줄링하여 처리할 수 있다. @Scheduled(cron = "0 0 11,17 * * *",zone = "Asia/Seoul") 대용량 데이터를 처리 해야 할 때 주로 이런 서비스는 대용량 데이터를 일괄적으로 처리하는 서비스 일 것이다. 만약 이와 같은 서비스에서 1000만 건의 데이터를 처리 해야 한다면 말이 달라집니다. 1000만건의 데이터를 데이터 블록에 적재해놓고 하나씩 처리한다면 메모리적으로 좋은 방법이 아닙니다. "페이지네이션을 ..
-
[Spring Rest Doc] Spring Rest Doc을 채택한 이유Server 2023. 3. 27. 22:55
이전 프로젝트에서 프론트와 API를 소통하기 위해 Swagger에 open API ui를 활용해서 사용했습니다. 이것이 편한건줄만 알았는데 편하지만 몇 가지 아쉬운 부분이 있었다. Swagger문서에서 요청되는 Httprequest가 실제 서비스 서버로 요청되면서 서비스용 데이터베이스에 반영이 되어 짧은 기간 프로젝트에는 적합하나 서비스를 운영하기 위해서는 테스트 서버와 서비스 서버가 분리되어야 했습니다. Controller만 구현되어도 문서에 명시되기 때문에 신뢰성 있는 API가 공유되지 않는다는 것입니다. 즉 에러가 나는 API도 공유가 됩니다. API문서가 수정될 때마다 노션의 문서를 수정했어야 했습니다. 문서를 수정하는 과정을 팀웜들이 굉장히 번거로워했습니다. 이러한 이유가 있었기 때문에 Spri..
-
[Spring Security] AccessToken가 탈취되면 어떻게 하나요?Server/Spring Security 2023. 3. 18. 22:49
이 글은 Spring Security에서 JWT 인증 방식(with Redis)으로 구현하면서 있었던 일을 정리한 글입니다. 프로젝트에서 인증인가를 JWT로 AccessToken을 구현해야 했다. Http 통신 테스트로 인증인가가 잘 되는 것을 확인하고 안도의 한숨을 내쉬기 전에 팀원이 AccessToken이 탈취되면 어떻게 하냐고 질문해 왔다. 그렇다. 해커가 탈취한 AccessToken으로 요청을 보냈을 때 서버에서 정상적인 유저인지 해커인지 판별할 수 없었다. 그렇다고 Stateless 한 방식을 버리고 다시 Session, Cookie로 인증인가를 해야 하는가에 대한 고민에 빠졌다. AccessToken이 탈취된다는 것은 네트워크 레이어 어딘가에서 해커가 HTTP 문을 탈취한다는 것인데, Acce..