본문 바로가기

백엔드26

[카카오테크캠퍼스] 3단계 개발 1주차 회고 3단계가 시작되고 2주간은 최종적인 기획을 완료하는 시간을 가졌다. 우리 팀은 기획은 탄탄히 해두어서 이제까지는 별로 할 일이 없었다.하지만 이번주부터 본격적인 개발 시작이다! 열심히 해야겠다.ERD설계, API 설계아 2주차 때 erd와 api설계를 했다. 데이터베이스에서 배웠을 때에는 정말 어려웠는데, 저번 프로젝트 때 한번 경험해보니까 너무 쉬웠다. 역시 경험이 중요한 것 같다. 데이터베이스 설계는 위와 같이 구성하였다. 다소 복잡하다ㅜㅜ데이터베이스 설계는 백엔드끼리 했다. 그 다음 api설계를 했다.이런 식으로 다 작성해두었다. 생각보다 고려해야 할 점이 많았다. 우리가 해결해야 할 것은 구인글을 조회할 때 모든 정보를 반환할 때랑 개인별 정보를 반환할 때랑 endpoint가 같다는 것이다. 처음.. 2024. 9. 19.
[Spring] 객체지향설계와 스프링 스프링에 객체지향 개념 이야기가 나오는 이유스프링은 DI(Dependency Injection)라는 의존관계 주입과 DI 컨테이너 제공으로 다형성 + OCP와 DIP를 가능하게 지원한다.클라이언트 코드의 변경 없이 기능 확장이 가능하다 스프링이 없던 시절엔 OCP와 DIP원칙을 지키면서 개발을 해보니 너무 할 일이 많았다. 이를 위해 프레임워크를 만들었다. 정리모든 설계에 역할과 구현을 분리하자공연으로 예를 들면 배역만 만들어두고 배우는 언제든지 유연하게 변경할 수 있도록 하는 것이 좋은 객체지향설계이다.이상적으로는 모든 설계에 인터페이스를 부여하자 실무적인 관점에서인터페이스를 도입하려면 추상화라는 비용이 발생한다. -> 예를 들어 특정 코드를 보기 위해 파일을 한번 더 열어보아야한다.따라서 기능을 확장.. 2024. 9. 15.
[Spring] 좋은 객체 지향 설계의 5가지 원칙(SOLID) SRP 단일 책임의 원칙한 클래스는 하나의 책임만 가져야한다.하나의 책임이라는 것은 모호중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일책임원칙을 잘 따른 것 OCP 개방-폐쇄 원칙확장에는 열려있으나 변경에는 닫혀 있어야한다.다형성을 활용해보면 이를 구현할 수 있다. -> 기존 코드는 그대로 두고 새로 이를 바탕으로 한 객체를 구현함으로써 해결인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현public class MemberService{ private MemberRepository memberRepository = new MemoryMemberRepository(); private MemberRepository memberRepository = new Jdb.. 2024. 9. 15.
[Spring] 좋은 객체 지향 프로그래밍이란? 객체지향특징추상화캡슐화상속다형성객체지향 프로그래밍프로그램을 여러개의 독립적인 단위 즉 객체들의 모임으로 파악한다. 객체는 메시지를 주고받을 수 있고, 데이터를 처리할 수 있다.객체지향프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들어서 대규모 소프으퉤어 개발에 많이 사용된다. 유연하고 변경이 용이? -> 레고블럭 조립하듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 다형성다형성을 실세계에 비유하면 운전자 입장에서 자동차라는 큰 틀이 있으면 그 자동차가 테슬라이던, 아반떼이던, 운전자의 역할을 그대로 할 수 있다.로미오와 줄리엣 연극에서 로미오의 역할을 맡은 배우는 줄리엣 역할의 배우가 누구던 영향을 받지 않는다.우리가 키보드의 브랜드를 바꾸어도 기존과 같이 일할 수 있다. 역할과 구현으.. 2024. 9. 15.
[Spring] 스프링이란? 스프링은 여러가지의 기술의 모음이다. 필수 : 스프링 프레임워크, 스프링 부트선택 : 스프링 데이터(CRUD도움), 스프링세션, 스프링 시큐리티(보안), 스프링 RestDocs(API문서화), 스프링 배치, 스프링 클라우드  스프링 프레임워크핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타웹 기술 : 스프링 mvc, 스프링 webflux데이터 접근 기술 : 트랜젝션, JDBC, ORM지원, XML지원기술 통합 : 캐시, 이메일, 원격접근, 스케줄링테스트 : 스프링 기반 테스트 지원언어 : 코틀린, 그루비이들을 통합해서 스프링 프레임워크라고 한다. 스프링 부트스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성tomcat 같은 웹.. 2024. 9. 13.
[카카오테크캠퍼스] 5,6주차 과제 코드리뷰 정리 5,6주차는 카카오 로그인와 배포라 피드백이 많이 없어서 합쳤다. code를 yml파일에 넣어서 깃허브에 올리지 않도록 한다.카카오 로그인을 구현할 때 code와 client_id가 필요하다. 그런데 이 값을 깃허브에 올리게 되면 보안상 많은 문제가 생길 수 있다. 그래서 이런 정보는 yml파일에 넣어서 git에 올라가지 않도록 해아한다. api에 들어가는 body는 dto로 만들어서 관리하자.나도 처음에는 이러한 방법으로 구현하려고 했으나, 왜때문인지 잘 되지 않았다.그래서 이 부분에 대해서 팀원분들께 여쭤보았더니 마침 같은 문제로 고민하다가 해결하신 분이 코드를 알려주셨다. 이 부분에서는 dto를 바로 넣으면 안된다. map 형태로 넣어야 하기 때문이다.ObjectMapper objectMapper .. 2024. 9. 9.