만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/backend&devOps 23

[HTTP] RESTful API

restful api 를 설명하라 rest 하게 잘 구성된 api 를 의미합니다. rest (Representational State Transfer) 하다는 것은 URI에 자원을 명시하고 HTTP method로 행위를 정의해서 서버로부터 데이터를 받거나 서버측에 데이터를 반영시키도록 하는 걸 명시적으로 잘 구현했다는 것이라고 생각합니다. REST 규약을 지키는 것은 여러 룰이 있겠으나 가장 와닿는건 아래 세가지입니다. HTTP 여야 함 stateless 해야 함 보안, 로드밸런싱 등 서버 내부구조를 클라이언트는 모르게 계층화해야함 HTTP to CRUD HTTP 메서드를 CRUD (기본으로 데이터 처리를 위해 갖추어야할 4가지 인터페이스 : 위키 발췌) 에 매핑하자면 아래와 같습니다. POST : Cr..

[Spring] 어노테이션(annotation) 기반 bean 설정법

어노테이션 기반 설정 AppConfig.java 파일을 이용한 스프링 컨테이너 빈 주입 방법은 관리해야하는 빈 수가 적은 경우에만 적절하다. 애플리케이션에 빈이 너무 많으면 불필요하게 작성해야하는 중복되는 코드들이 너무 많아진다. 그래서 스프링은 어노테이션 기반의 설정을 제공한다. 훨씬 쉽게 관리가 가능하다. 두 가지 유형의 어노테이션을 제공한다. 빈 선언 어노테이션 @Repository @Controller @Service @Component 등의 스테레오 타입 어노테이션 세트를 제공한다. 스프링이 관리해야하는 클래스에 위 어노테이션을 적용한다. 스프링은 @ComponentScan 에 입력한 기본 패키지부터 스캔해서 위 어노테이션이 달린 클래스를 수집한다. @Component 는 제네틱 스테레오 타입이..

[intelliJ] Google Style guide intelliJ 적용법

코드 스타일 모든 개발자들이 진행하는 프로젝트들은 각자의 코드 스타일이 존재한다. 변수명은 camelCase 로 해야한다던지... PascalCase 로 해야한다던지... 들여쓰기 간격은 4회여야한다. 2회여야한다 등등 여러 사람이 협업하는 프로젝트에서 코드의 스타일 규칙은 중요하다. 이런 규칙을 만드는 사람이 일일이 정하긴 힘드니 주로 사용하는 것이 바로 'Google Style Guide' 이다. (https://github.com/google/styleguide) 구글이 정해놓은 스타일 가이드라인대로 개발을 하면 여러 명이 하나의 프로젝트를 개발하더라도 일관성있고 가시성이 좋은 코드의 모습이 나올 수 있을 거다. 내로라하는 똑똑한 분들이 정해놓은 규칙이니까. 적용법 그럼 이런 코드 스타일의 규약들을..

[OOP] 객체지향 설계 5원칙 : SOLID 디자인 원칙

로버트 C. 마틴의 '클린소프트웨어: 애자일 원칙과 패턴 그리고 실천 방법' 에서 소개됨. SRP 단일 책임 원칙 한 클래스는 변경에 대한 이유를 하나만 가져야 한다. 여기서 말하는 책임 은 변경을 위한 이유 즉 클래스를 변경할 때 클래스를 변경하기 위한 다른 이유를 생각할 수 있다면 이 클래스는 SRP 위반 다른 해석으로는 책임이 변경의 축이라는 것. 예시로 클래스를 토론방이라고 하자면, 한 방에서 축구,스키,하이킹,야구 등을 이야기하고 있는데 갑자기 누군가가 영화에 대해 이야기 하면서 주제가 '사람들이 좋아하는 영화, 영화 캐릭터, 명장면에 대한 토론' 을 시작한다면 이 토론방은 2개로 나누는 것이 낫다. (취미 / 영화) 즉 여기서 취미 가 변경의 축이다. 변경의 축은 변경이 일어날 때만 변경의 축..

[Spring] J2EE란?, EJB란?, Spring framework 의 탄생 배경

J2EE (자바 to 플랫폼 엔터프라이즈 에디션) client 단에 J2EE 는 순수 HTML 지원. HTML, 다른 포맷 data 를 만들어 제공하기 위해서는 JSP, servlet code 가 필요 EJB 는 플랫폼의 로직이 저장되는 별도 레이어를 제공. EJB 서버는 스레딩, 동시성제어, 보안, 메모리 관리 등을 지원하는 함수들 제공 JDBC(자바 데이터베이스 연결성) 을 제공. 자바 데이터베이스를 위한 표준 인터페이스다. GUI (그래픽 사용자 인터페이스) 를 요구하는 일 없이 개발자들에게 일관성을 향상시켜주는 자바 서블릿 API 제공 스프링이랑 J2EE는 다른거야? 스프링 프레임워크 또한 J2EE application 이다. 스프링은 J2EE를 대체할 수 없다. 다만 스프링은 J2EE를 만족한다..

[AWS] amazon lambda + API Gateway 로 SNS 메시지 보내기 - 2

2021.04.12 - [프로그래밍/backend&devOps] - [AWS] amazon lambda + API Gateway 로 SNS 메시지 보내기 - 1 [AWS] amazon lambda + API Gateway 로 SNS 메시지 보내기 - 1 먼저 발행된 글들 2021.03.04 - [프로그래밍/backend&devOps] - [AWS] Amazon SNS 란? [AWS] Amazon SNS 란? Amazon SNS 란? Amazon Simple Notification Service (Amazon SNS) is a managed service that provide.. choichumji.tistory.com API Gateway 를 람다의 트리거로 추가하자 람다함수가 동작하기 위해서 Trig..

[AWS] amazon lambda + API Gateway 로 SNS 메시지 보내기 - 1

먼저 발행된 글들 2021.03.04 - [프로그래밍/backend&devOps] - [AWS] Amazon SNS 란? [AWS] Amazon SNS 란? Amazon SNS 란? Amazon Simple Notification Service (Amazon SNS) is a managed service that provides message delivery from publishers to subscribers (also known as producers and consumers). Publishe.. choichumji.tistory.com 2021.03.04 - [프로그래밍/backend&devOps] - [AWS] Amazon SNS 로 구독자 메일 전송을 해보자 [AWS] Amazon SNS 로..