들어가며 나 자신에 대해 많이 실망하게 된 한 주였다. 내가 맡은 부분을 다른 사람들은 시간 내에 해결하고 있는데, 나는 결국 일주일 안에 해결하지 못했다. 이번 한주의 WIL은 내가 맡은 '소셜로그인' 부분을 공부하면서 막혔던 부분에 대해 작성해보고자 한다. 소셜 로그인 우리 팀은 카카오, 네이버, 구글에서 제공하는 소셜 로그인 기능을 이용하고자 했고, 해당 부분을 내가 맡게 되었다. 로그인 방식 하나를 먼저 구현해두면 다른 부분은 거의 비슷하다는 말에 따라 가장 흔히 접하는 카카오 로그인부터 구현하고자 하였다. 그냥 로그인만 구현하고자 하면 다음과 같이 간단하게 구현할 수 있다. 카카오 소셜 로그인 카카오 소셜 로그인 flow Step1. 인가 코드 받기 서비스 서버가 카카오 인증 서버로 인가 코드 ..
Study
들어가며 프로젝트를 진행하면서 CI/CD를 알고 이를 구현하는게 필요하고, 중요하다는 걸 느끼게 되었다. 일일히 프로젝트를 빌드하고 배포하는 과정이 매우 귀찮기도 하고, 협업을 하게 된다면 팀원들의 코드를 일일히 깃에 push해서 에러를 수정한 다음 배포하기는 번거롭겠다는 생각이 들었다. 따라서 오늘은 CI/CD에 대해 정리하고자 한다. CI/CD란? CI/CD는 지속적 통합(Continuous Intergration)과 지속적 배포(Continuous Deployment)의 약자로, 어플리케이션 개발 단계를 자동화하여 릴리즈 주기를 단축시킨다. CI/CD는 어플리케이션의 통합 및 테스트 단계에서부터 배포에 이르기까지 어플리케이션의 라이프사키을 전체에 걸쳐 지속적인 자동화와 모니터링을 제공하고, 이런 방..
들어가며 벌써 항해99를 시작한 지 49일차가 되었다. 이제 정말 얼마 남지 않았다는게 실감이 되면서, 앞으로의 실전프로젝트 기간이 걱정이 되면서도 프로젝트가 완성되었을 때의 기대감도 크다. 이번주 WIL 역시 항해99에서 제시해준 키워드 정리와, 이번 한 주간의 회고록을 작성해보고자 한다. CI/CD [개발지식] CI/CD란? [개발지식] CI/CD란? 들어가며 프로젝트를 진행하면서 CI/CD를 알고 이를 구현하는게 필요하고, 중요하다는 걸 느끼게 되었다. 일일히 프로젝트를 빌드하고 배포하는 과정이 매우 귀찮기도 하고, 협업을 하게 된다면 annajin.tistory.com CI/CD는 빌드, 테스트, 배포를 자동화함으로써 개발과 배포를 더 편하게 해준다. 회고록 잘 할 수 있겠지? 처음으로 해보는 제..
10시 전체 회의 첫 전체 회의가 있었다. 이번 회의에서는 어제 마무리하지 못한 기획에 대해서 어떤 문제점이 있고 어떻게 해결해야할 지 의논하는 시간을 가졌다. 본가에 내려갔다가 일찍 올라오는 일정이 있었어서 정신없는 와중에 회의에 참여하게 되는 바람에 문제점에 대한 확실한 의견을 내지 못해서 조금 아쉬웠다. 기획 피드백 기획에서 공공 API를 호출했을 때 문제점이 10시 회의에서 크게 나타났는데, 우선 API가 보내주는 데이터가 지저분한 바람에 우리가 원하는 대로 가공하기가 쉽지 않다는 점이 있었고 또, 유저가 API를 호출할 때 보내준 데이터를 유저에게 뿌려줌과 동시에 DB에 저장하고, 스케쥴러로 관리하려고 했는데 이 부분에서 중복 요청이나 테이블 관리를 하기 어렵다는 문제가 있었다. 고민에 고민을 ..
실전 프로젝트 시작 항해99 팀원들과, 슈퍼 팀원, 그리고 디자이너가 한 데 모였을 때, 어떻게 프로젝트의 시작을 잘 이끌어 나갈 수 있을 지 고민이 많았는데 모든 분들이 열정적으로 참여해주셔서 덜컹거리지 않고 수월하게 스타트를 끊었다. 기획 회의는 의견을 정말 다양하고 많이 내주셔서 투표로 정하게 되었는데, 최종적으로 선전된 주제는 [장애인을 위한 배리어프리 가게 찾기]가 되었다. 개발을 시작했을 때부터 꼭 한번 만들어보고 싶었던 주제였기에 이 주제로 프로젝트를 진행하게 되어서 내심 기분이 좋았다. 기획 회의 선정된 주제를 바탕으로 어떤 기능을 넣을 지를 중점으로 기획 회의를 진행했다. 동시에 그 기능을 구현하기 위해서 백엔드는 어떤 기술을 사용해야할 지도 함께 고민을 하였고, 여러가지 레퍼런스와 기술..
들어가며 실전프로젝트 D-1 아직도 주특기 주차 과제에서 해결하지 못한 부분이 많다는걸 뒤늦게야 깨달아서 마음이 조급해졌다. 빨리 서버를 만들어서 프론트와 연결해야한다는 생각에 사로잡히는 바람에 문제점들을 제대로 짚어내지 못한게 화근이었다. 당장 실전 프로젝트때 적용해야하는 부분들이기 때문에 미리 알아두었어야 하는 부분들인데... 아쉬움이 크게 남는다. 오늘의 TIL은 주특기 주차동안 해결하지 못했던 부분, 아쉬웠던 부분을 실전프로젝트 때 적용할 수 있도록 정리하고자 한다. 해결하지 못한 부분 테스트 코드 작성 개발의 기본이 되는 테스트 코드 작성. 중요한 부분이지만 다른 부분을 잡느라고 작성하지 못했다. 뒤늦게 테스트 코드를 잡으려고 하니 시간이 부족한 사태가 벌어졌다. 실전이 들어가기 전에 테스트 코..
들어가며 드디어 벼르고 벼르던 프록시와 지연/즉시 로딩의 정리가 끝이 났다. 하이버네이트를 선행하거나 JPA를 확실히 공부한게 아니라 Spring Data JPA를 이용해서 바로 활용단계로 넘어간 탓인지 이 개념에 대해 이해하고 내 언어로 정리하기가 상당히 어려웠다. 또, 이 개념을 알기 위해서는 선행에 선행해야하는 지식들이 꽤 있어서 그것들 먼저 정리하고 나중에 와서 정리해야지! 라고 생각하고 있었더니 더 막막해져서 다른 일을 우선순위로 두는 바람에 많이 늦어졌다. 그래도 시간을 들여서 이렇게 정리하고 나니까 확실히 전보다는 JPA에 한걸음 가까워진 기분이 든다. 역시 공부하는 건 재밌어! 오늘의 TIL은 열심히 정리한 프록시와 지연 로딩, 즉시 로딩에 관한 포스팅을 첨부하는 것으로 간단하게 끝내고자 ..
들어가며 JPA를 이용해서 개발을 하다보니 처음에는 순환 참조 에러, 그 이후로는 지연 로딩 관련 에러를 계속 마주치게 된다. 특히나 지연로딩에 관련해서 애를 많이 먹었기 때문에 이번에는 지연로딩과 즉시로딩, 그리고 그 둘을 알기 위해 프록시까지 정리를 해보고자 한다. 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 DB에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 DB에서 조회하는 것이 아니라, 실제 사용하는 시점에서 DB에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 ..
들어가며 실전프로젝트까지 얼마 남지 않은 시점에서 그 무엇보다 JPA의 개념을 가져가는게 더 중요할 거라고 생각했기에 체력 관리와 개념 공부에 힘쓴 날이다. 오늘의 TIL은 오늘 정리한 JPA의 영속성 컨텍스트의 포스팅을 링크거는 걸로 마무리하도록 하겠다! 영속성 관리 [JPA] 영속성 관리 [JPA] 영속성 관리 들어가며 이 포스팅은 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 강의와 저서를 주로 참고하여 작성하였음을 미리 밝힌다. Spring data JPA를 사용하여 개발을 진행하기 전에 JPA와 하이버네이트 annajin.tistory.com 마치며 오늘은 신나는 맥주파티 하는 날~! 일요일의 연장으로 소소하게 즐기는 시간을 갖기로 했다.
들어가며 이 포스팅은 김영한 강사님의 자바 ORM 표준 JPA 프로그래밍 강의와 저서를 주로 참고하여 작성하였음을 미리 밝힌다. Spring data JPA를 사용하여 개발을 진행하기 전에 JPA와 하이버네이트에 대한 이해가 부족하다고 판단하여 공부를 하기 위해 작성된 포스팅이므로 잘못된 정보가 있을 수 있기에 김영한 강사님의 저서와 강의를 직접 듣고 공부하는 걸 추천한다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 쉽게 생각하면 엔티티 매니저는 엔티티를 저장하는 '가상의 데이터 베이스'라고 볼 수 있다. 엔티티 매니저 팩토리는 이 엔티티 매니저를 만드는 '공장'인데, 공장을 만드는 건 현실에서든 개발에..
반응형