전체 글

키태 개발 기록
최근 어느정도 업무에 익숙해지기도 했고 스스로 컴포트존(Comfort Zone)에 들어왔다고 생각했다. 집을 회사 근처로 옮긴 후에는 출근 전, 퇴근 후 조금이지만 체력과 시간이 남아있었다. 이 컴포트존에서 벗어나기 위해 해보지 않은 기술 공부, 공부를 하더라도 프로젝트에 옮길 수 있는 환경이 필요하다고 생각했었다. 운이 좋게도 학교 후배가 좋은 의미의 사이드 프로젝트를 같이하자고 연락을 줘서 선뜻 수락을 했다. https://causw.co.kr/ CAUSW causw.co.kr "동문 네트워크'라는 프로젝트이며 중앙대 소프트웨어학부 동문만 사용할 수 있는 커뮤니티 서비스로, 단순 소셜 네트워크 기능 뿐만 아니라 사물함 신청, 동아리 신청 및 학생회 사업/행사 신청 등 전반적으로 소프트 학생 사회를 하..
· 구현
회사 프로젝트 중 싱글톤 패턴을 활용해 코드를 짜고 있었다. 스프링에서는 기본적으로 싱글톤 패턴을 제공해주고 있지만 직접 구현하고 쓰는 건 처음이다. 싱글톤 패턴이란 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미하며 이런 정의는 모두나 알고 있지만 구체적으로 어떻게 쓰이는지, 또 여러 방식으로 쓰이지만 각 방식에 있어서 장단점이 무엇인지 알게된 뿌듯한 시간이었다. 1. Eager Initialization 우선 가장 간단한 방식으로 Eager Initialization 방식이 있다. 코드부터 보도록 하자 public class VoteUtil { private static VoteUtil instance = new VoteUtil(); private VoteUtil() {} public static..
· 구현
JPA를 사용해서 엔티티에 생성되어있는 created_at과 updated_at의 중복 코드를 줄여보도록 하자 내가 진행하고 있는 프로젝트에서 기존의 Entity들은 아래 코드처럼 컬럼이 정의되어 있었다. @Column(name = "created_at", nullable = false) private LocalDateTime createdAt 그리고 엔티티들이 생성될 때, 나는 각각 생성자에 LocalDateTime.now()를 통해 DB에 저장시켜줬다. @Builder public Answer(String content, Integer emotion, LocalDate date, User user, Boolean isPublic, Boolean isPremium, Boolean isSpare){ th..
· 스터디
[가상 면접 사례로 배우는 대규모 설계 기초]의 책을 읽고 공부한 내용을 정리하는 글 입니다. 사진과 내용을 해당 블로그에서 많이 참고했습니다. 감사합니다:) 먼저 대규모 시스템을 설계하기 전에, 가장 태초의 단일 서버인 상황을 생각해보자 이 단일서버에서 우선 사용자는 도메인 이름 (www.mysite.com)을 이용해서 웹 사이트에 접속한다. 그러면 DNS가 웹 서버의 IP 주소를 반환해주고 해당 IP 주소로 HTTP 요청이 전달된다. 그 후 웹 서버로부터 HTML 페이지나 JSON 형태의 응답이 반환되는 구조이다. 해당 구조에서 사용자가 늘어나면 당연히 서버 하나로는 부족할 것이다. 그래서 데이터베이스를 담당하는 서버를 하나 추가한다. 데이터베이스는 크게 RDBMS, NoSQL 2가지로 나눌 수 있는..
10월 6일부로 정말 힘들었던 취준이 끝났다. 짧게보면 막학기(9월)부터 길게보면 전역 후(2021.09)부터 지금까지 달려왔다. 남들보다 부족하단 생각에 항상 스스로 채찍질하며 어떻게든 공부를 하려고 노력했다. 항상 블로그를 운영해오며 취업에 성공했을 때 취준 후기를 꼭 작성하고 싶었는데 이번 기회에 입사 전에 그간의 취준 기록을 정리해보려고 한다. 글을 쓰기 전 미리 말씀드립니다. 이 글은 저의 개인적인 취준 경험일 뿐이고, 절대 '정답'이 아님을 알립니다. '아 이렇게 취준을 한 사람이 있구나'라고 알아주시면 감사하겠습니다. 혹시 궁금하신 점이 있으면 댓글이나 이메일(dlrlxo999@naver.com) 보내주시면, 제가 아는 선에서 최대한 도움이 될 수 있도록 노력하겠습니다. 감사합니다:) 🙋🏻 ..
https://kitaees.tistory.com/55 [회고] 창업팀에서 백엔드 개발자로서 앱을 출시하며 느낀점 요즘 나는 중앙대학교 LINC 3.0 Start-up Members 학생 창업팀인 '텔링어스'에서 개발팀장 겸 백엔드 개발자로서 일하고 있다. 프로젝트 선에서 끝내는게 아닌 실제로 출시하고 유저들이 사용하며 조금 kitaees.tistory.com 위 글에서 말한대로 8월 중후반에 우리 팀은 앱 스토어에 서비스를 출시하는데 성공했다. 하지만 개발자 입장에서 마냥 완벽한 서비스는 아니었다. 출시 기간을 더이상 늦추면 루즈해진다고 판단해 위험성을 감수하고 출시했기 때문이다. 아직까지 크리티컬한 운영 에러는 나오지 않지만 분명 9월이 되어 서비스 마케팅을 시작하면 트래픽이 증가해 수많은 에러가 나..
요즘 나는 중앙대학교 LINC 3.0 Start-up Members 학생 창업팀인 '텔링어스'에서 개발팀장 겸 백엔드 개발자로서 일하고 있다. 프로젝트 선에서 끝내는게 아닌 실제로 출시하고 유저들이 사용하며 조금의 수익성까지 생각하고 있는 든든한 친구이자 동료들끼리 모인 팀이다. 돈을 받고 하는게 아닌, 20대 젊은 시절의 열정만으로 모인 팀이다. 이번에 완성도가 좀 떨어지긴 하지만 기간을 더 미루면 루즈해질수도 있다고 판단해 우선 2차 기능까지만 구현하고 앱스토어 출시했다. 1번의 간단한(?) 리젝 후에 릴리즈에 성공했지만 9월 15일에 코드 리팩토링 및 2.5차 기능까지 릴리즈 후 본격적으로 마케팅하기로 해 아직까지는 많은 유저들은 없다. 하지만 우리 멤버들만 있는게 아니라 외부인도 꽤 들어오긴 한 ..
· 구현
왜인지는 모르겠으나 이번 애플 소셜로그인 탈퇴 기능을 구현하면서 생각보다 레퍼런스가 적음을 알았고 저도 구현했던 개념을 공부하고 정리할 겸 블로그에 작성하게 되었습니다. 혹시나 궁금하신 점이나 틀린 점이 있으면 댓글로 남겨주시면 바로 반영하겠습니다 🤔 애플 소셜로그인 탈퇴 도입 과정 기존에 회원탈퇴 기능이 없었던 것은 아니었습니다. 기존의 회원탈퇴 로직은 1. 클라이언트 측에서 회원 탈퇴 요청 (REST API) 2. 서버 측에서 유저 정보 확인 3. 서버 측에서 해당 유저가 작성한 모든 답변 삭제 처리 4. 서버 측에서 해당 유저의 정보를 지우는 것이 아닌 STATUS 컬럼 UPDATE 처리 위 로직을 따르고 있었습니다. 하지만 애플 측에서 하는 말을 보면 애플 소셜로그인 과정에서 사용자 토큰을 넘겨주..
· 구현
오랜만이에요! 텔링미(https://tellingme.co.kr) 개발팀장이자 서버 개발자인 키태 입니다. 이번 1차 출시에서 푸시알림을 구현하면서 너무나 많은 어려움을 겪었고 레퍼런스가 부족하다고 생각해 모두를 위해 또 저를 위해 저만의 레퍼런스를 작성해볼까 합니다! 개발 환경 사실 참 사소한 글이지만 저는 다른 레퍼런스들을 보면서 저의 개발 환경과 달라 따라하다가 그만두고 실패하고를 많이 반복했기에.. 레퍼런스에 개발 환경을 적어주는 경우가 편했습니다. 다른 분들도 혹시 저의 레퍼런스를 보고 따라하기 전, 자신의 개발 환경과 맞는지 꼭 확인해보세요! Spring Framework - 2.5.9 java - 11 com.google.firebase:firebase-admin:6.8.1 그리고 저희는 클..
텔링미 개발팀장(이름만)을 맡고있는 '키태'라고 한다. 처음으로 쓰는 팀 블로그에 무슨 글을 쓰면 좋을 지 생각하다 개발팀 모두가 힘들게 고생한 로그인 스프린트에 관해 써보려 한다. 더불어 로그인 이후에 가장 중요한 토큰 로직까지 아직 팀원들과 공유하진 않았지만 이 기회에 써보면 좋을 듯 하다. 🤔 로그인 방식 선정 스프링에서 로그인 방식은 크게 2가지가 있다. 세션 로그인 JWT(Json Web Token) 로그인 각 방법마다 장단점이 있겠지만 우리는 10000명 이상의 사용자를 목표로 하고 있었기에 서버의 자원 소모가 큰 세션 로그인 보단 JWT 로그인이 적합하다고 판단했다. 또 서버팀이 이때까지 해온 대부분의 프로젝트에서 JWT 방식으로 로그인을 구현했기에 상대적으로 익숙한 기술을 도입하는게 맞다고..
키태
키태