분류 전체보기 55

사이드 프로젝트의 기록 - 글쑤시개 (1)

돌아보니 저는 백엔드 역량에만 치우진 사이드 프로젝트만 하고 있었던 것 같습니다. 그러다보니 항상 반쪽짜리 프로젝트만 만들게된 것이 아쉬웠고, 이즈음에서 제대로된 한 사이클의 어플리케이션을 만들어봐야겠다는 결심을 했습니다. 이 시리즈는 프로젝트를 진행하면서 겪는 어려움과 회고가 기록할만큼의 쌓이면 작성됩니다. 글쑤시개 BE 사이드 프로젝트 선택 먼저 내가 풀스택으로 개발할 것인가? 아니면 팀을 구할 것인가? 를 고민했는데, 실무와 병행하면서 실력을 키우려면 백엔드에 더 집중해야된다는 결론을 냈습니다. 몇 번의 사이드 프로젝트와 실무를 경험하면서 개발자의 관점에서 느낀 점은 3가지 였습니다. 내가 안다고 생각하던 기술도 노베이스에서 적용하려고 하면 헤멘다. 공부한 기술을 실무에 적용하고 싶지만, 피쳐 개발..

잡담 & ETC 2021.06.22

Spring Security 로 회원 가입을 구현해보자 (3)

Step 4. Custom Annotation 을 통해 로그인 정보 가져오기 1. Custom Annotation 구현 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) public @interface LoginMember { boolean required() default true; } annotation 은 기본 값을 true 로 두고 필요한 api 에서만 사용합니다. @Component public class LoginMemberArgumentResolver implements HandlerMethodArgumentResolver { private static final String AUTHORIZATION_HEADER = "au..

Spring Security 로 회원 가입을 구현해보자 (2)

Step 3. JWT 적용 1. 준비 // build.gradle dependencies { implementation 'io.jsonwebtoken:jjwt-api:0.11.2' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2' } // application.yml application: jwt: secreat: ${SECREAT:341242FF3617E8D58D7A4F6FEED56FEB8619CF82B9B00829A02E161A4418BFA2} 본 예제에서는 jwt 생성시 HS256 알고리즘을 사용합니다. HS256 알고리즘을 위해서는 secreat 이 256 bit 이상이어야하..

Spring Security 로 회원 가입을 구현해보자 (1)

생각해보니 저는 이미 구현되어 있는 인증을 가져다 쓰기만 할 뿐, 그 내부 구조는 이해하지 못하고 개발해온 것 같습니다. 그래서 이번 사이드 프로젝트에는 Spring Security 를 활용해 암호화부터 JWT 까지의 회원 가입을 구현했고 그 기록을 남겨봅니다. 아쉽게도 Spring Security 는 이해가 깊지 못해 일부 저의 방식으로 구현한 내용이 있습니다. 내용을 읽는데 참고해주세요. 코드는 일부 각색되었습니다. 각 Step 별 자세한 코드는 repository 의 서브 branch 를 참고해주세요. Spring Security 로 회원 가입을 구현해보자 Step 1. 회원 가입 @Entity public class Member { @Id @GeneratedValue(strategy = Gener..

RSS 로 블로그를 모아보자

요즘은 많은 회사들이 기술 블로그를 운영하고, 감사한 개발자분들이 양질의 블로그를 운영해주시고 있습니다. 하지만 반대로 너무 많다 보니 모아보기가 힘들고, 모아주는 서비스는 내 입맛에 맞지 않거나 알람 확인이 힘들 때가 있는데요. 그래서 저는 사설 Slack 채널에 RSS 피드 구독 설정을 했고 이 과정에서의 작은 팁을 공유합니다. 구독 방법은 공식 레퍼런스를 참고해주세요. Slack에 RSS 피드 추가 즐겨 찾는 블로그나 새 사이트가 있나요? Slack을 사용하여 RSS 및 Atom 피드를 모두 구독하고 선택한 Slack 채널에서 업데이트를 받을 수 있습니다. 참고... slack.com RSS 피드 가져오기 기억보단 기록을 Java, TypeScript, ORM, RDBMS, AWS 를 주로 다루고 ..

Tip 2021.05.23

mongoDB tutorials

이번에 회사의 새로운 아이템을 프로토타입으로 만들 일이 생겼는데 회사에서 주로 사용하는 툴에 익숙해질 겸 가볍게 NCP와 mongoDB 를 사용해서 구성해보기로 했습니다. Naver Cloud Playform - 처음 만져봄. mongoDB - select 문도 할 줄 모름. 목표 머신러닝으로 돌린 데이터를 mongoDB 에 적재합니다. 이미 운영 중인 AWS EC2 서버에서 NCP로 연결합니다. NCP - Cloud DB for MongoDB 구성 AWS 가 아닌 NCP를 사용한 이유는 크레디트를 투자받았기 때문입니다. 퀵스타트 가이드가 잘 돼있어서, 캡처보다는 한 작업들을 서술형으로 작성합니다. 항목 Dev Prod Dev(계획) Prod(계획) 서버 구성 Stand Alone Stand Alone ..

Study 2021.05.18

기술 '잘' 선택하기

최근 회사에 DB 형상 관리 라이브러리를 새로 적용할 일이 생겼습니다. 익숙한 것은 flyway 였지만 요즘은 오픈소스가 워낙에 많고, 내가 모르는 더 좋은 라이브러리가 있지 않을까?하는 생각에 찾아보기 시작했고, 그 과정이 생각보다 재미있었기에 글을 작성해봅니다. 결론부터 말하자면 flyway를 선택했습니다. 이하에서는 라이브러리 대신 기술이라는 단어를 사용합니다. 기술을 검색하기 시작했을 때 제가 알던 키워드는 형상관리, flyway 단 2개였습니다. 1. 구글 검색하기 개발의 알파이자 오메가 구글 검색입니다. 1 페이지에 모두 같은 기술로 도배되어있기에 사실상 여기에서 flyway를 선택하고 끝내도 이상하지 않습니다. 하지만 관련 검색어를 보면 다른 키워드도 보입니다. 조금 더 검색해봅시다. 2. ..

Series/실전! 2021.05.07

API Versioning 전략

API Versioning은 불특정 다수의 컨슈머가 접속하는 OpenAPI를 지원하기 위해 필수적인 요소 중 하나로, 설령 컨슈머가 한 곳이라고 하더라도 원활한 적용과 장애 시간 최소화를 기대할 수 있습니다. (물론 훌륭한 배포 전략을 준비하면 더 좋습니다.) 아래는 일상 속 사물이 알려주는 웹 API 디자인 을 읽고 해결한 고민과 경험을 기록해봤습니다. 브레이킹 체인지 - 호환성을 지원하지 않게 되는 변경 (특히 하위 호환성) 컨슈머 - API 를 사용하는 클라이언트 (프론트) 프로바이더 - API를 제공하는 서버 (백엔드) 일상 속 사물이 알려주는 웹 API 디자인 - YES24 웹 API는 새로운 서비스나 앱을 만들 때 기존에 존재하던 서비스가 제공하는 기능을 활용할 수 있도록 해준다. 굳이 기존 ..

Study 2021.04.14

토끼책을 읽고 - 메시지를 믿을 수 있을까? (2)

[v4] 조금 다른 예를 들어보겠습니다. /* 1. 제품을 만들기 위한 부품 (인자로서 사용됨을 표시하기 위해 Dto 표기) */ @Setter @Getter @NoArgsConstructor public class PartDto { // 모든 곳에서 필요합니다. private Boolean steal; // 컴퓨터와 핸드폰에서 필요합니다. private Boolean semiconductor; // 선풍기에서 필요합니다. private Boolean propellers; // 선풍기와 핸드폰에서 필요합니다. private Boolean button; } /* 1. 제품을 만들기 위한 부품이 있는지 확인하고 있으면 만드는 서비스 */ public class ProductService { public bo..

Study 2021.03.08

토끼책을 읽고 - 메시지를 믿을 수 있을까? (1)

이전 회사에서는 객체 지향적인 설계보다는 일단 되는 프로그램을 만드는 게 먼저였는데, 이번에 옮긴 회사에서는 객체 지향에 대한 투자를 많이 하는 것 같습니다. 이론의 부족함을 느꼈기에 이전에 읽으려다 만 토끼 책 (객체지향의 사실과 오해 - 조용호 저)을 읽어봤습니다. 역할, 책임 & 메시지, 협력 대부분 좋은 내용이고 이전에 구현한 어설픈 OOP, ORM에 대한 고민을 해결해줬지만, 하나가 계속 걸려서 이 글을 쓰게 되었습니다. 메시지를 믿을 수 있을까? 책에서 언급되지 않은 부분은 각색하고, 관련된 코드의 브랜치를 스텝별로 대괄호 표시했습니다. https://github.com/Hyune-c/Trust-Message/tree/master [v1] 책에서는 판사-토끼-증인을 객체로서 책임과 메시지를 설..

Study 2021.03.08