게시글
질문&답변
현재 섹션5 보고 있는 상태인데 이후에 push & pull model의 차이점도 나오나요?
ㅠ 완강했는데 나오지는 않는군요....음그러면 혹시 스프링부트 액츄에이터+ 프로메테우스+ 그라파나 대시보드ELK: ElasticSearch / Logstash / Kibana 대시보드이 두개의 차이점과 장단점이 어떤게 있는지 고견을 듣고싶습니다그리고 현업에서, 프로젝트 규모별로 어느쪽을 더 많이 사용하는지도 알고싶어요~!
- 1
- 2
- 100
질문&답변
다음 강의를 준비하신다면 음질좀 높여주실 수 있으신가요..?ㅠㅠㅠ
Hello World, developer y님 감사합니다!!!4년차 백엔드 개발자인데, 많이 배워갑니다.2년차까지 기능개발만 했다가 3년차부터 테스트코드/운영/데브옵스에 관심이 생겨 이것저것 보고 있네요AutoConfiguration을 찾으려고 브레이크 포인트 걸어서 디버그로 실행한다던지.. 등등이요!좋은 강의 무료로 제공해 주셔서 감사합니다
- 0
- 2
- 160
질문&답변
User 반환값, 에러처리2개 총 3개 질문있습니다!!
+ 에 대한 내용인데 PreAuthorize도 헤더를 체크하는거같은데, @RequestHeader랑 다른점이 있다면 무엇이있는건가요?
- 4
- 2
- 333
질문&답변
강사님 다대다 설정과 개인프로젝트 적용에 대해 질문있습니다
이미지들은 새 탭에서 이미지 열기로 하면 크게 잘 보이는것같습니다 ㅠㅠ
- 0
- 2
- 1.3K
블로그
전체 42025. 03. 29.
0
[인프런 워밍업 클럽 3기 - BE/Project] 4주차 회고 발자국 🐾
마지막까지 KPT 회고 프레임워크를 선택해서 작성해보려고 한다! Keep(만족, 지속하고 싶은 부분)마지막 4주차는 개인프로젝트는 잠시 stop하고 강의와 관련된 부분을 이어 나갔다.Kotlin, Springboot, MySQL, JPA, Docker/compose, Thymeleaf, Bootstrap으로 개발하고 GCP에 Docker로 배포하고 Domain을 구입하고, certbot nginx로 인증서를 발급받아서 https까지 적용했다.2주 쫌 안되게 걸렸는데, 신기했던 부분이 몇 가지 있었다. 첫번째, 코틀린은 언어의 특성으로 인해 주 생성자 부분에 인자를 나열하는 스타일, 주 생성자에는 파라미터만 받고 { } 본문에 val/var등을 붙여 프로퍼티를 만드는 방식, 주 생성자에는 최소한의 인자를 받고 부 생성자로 처리하는 스타일, 주 생성자의 호출을 private으로 막고 정적 팩토리 메서드 패턴을 사용하는 방식 등 다양한 스타일이 나올 수 있는데 지식공유자님은 이 중 어떤 하나의 스타일을 선호하셨다..!! ㅎ내가 말한 것들을 예로 들면 아래와 같은 코드이다.// 스타일 1: 주 생성자 부분에 인자를 나열하는 스타일 class Person1(val name: String, val age: Int) // 스타일 2: 주 생성자에는 파라미터만 받고, 본문에서 프로퍼티를 생성하는 방식 class Person2(name: String, age: Int) { val name = name var age = age } // 스타일 3: 주 생성자에 최소한의 인자를 받고, 부 생성자로 처리하는 스타일 class Person3(val name: String) { var age: Int = 0 constructor(name: String, age: Int) : this(name) { this.age = age } } // 스타일 4: 주 생성자의 호출을 private으로 막고, 정적 팩토리 메서드 패턴을 사용하는 방식 class Person4 private constructor(val name: String, val age: Int) { companion object { fun create(name: String, age: Int): Person4 { return Person4(name, age) } } }참고로 프로퍼티(주생성자에 붙이던, 클래스 바디부분에 붙이던)에 private을 붙인다면 딱 생성자에만 사용할 수 있고 어떠한 getter나 setter로 인한 조작을 제공받을 수 없게된다(코틀린을 써본 사람이 있다면 이걸로 검증할 수 있을 것 같다ㅎㅎ) 두번째, 테스트코드의 클래스 최상단에는 DisplayName을 명시하지 않고 테스트함수(메서드)에만 붙여왔었는데, 강의에서는 최상단의 클래스에도 붙이니 depth가 생겨서 읽기 좋았다. 세번째, 실제 쿼리를 처리하는 JPA또는 CRUD Repository들은 domain 레이어에 두고, 이 repository들을 따로 모아서 presentation/repository 패키지에서 PresentationRepository로 사용하신 부분이었다. 일종의 Facade로 사용하신 것 같은데 강의에서는 처음 봤다. 그리고 이와 관련해서 Spring에는 Repository로 메타데이터를 표시하면(어노테이션), 그 내부에서 호출하는 예외를 DataAccessException으로 Wrapping해준다. 그래서 계속 @Repository를 사용 안하시길래 의아했었는데, Presentation Layer쪽에서 여러 레포지토리들을 사용하는 부분에서 마킹해준걸 보고 오호~! 했다. 네번째, 나는 회사에서 application-{환경}-example.yaml 형태는 github에 올리고 example이 안붙은거는 gitignore에 추가하는 방식으로 사용한다던지.. 아니면 아예 application관련 파일들은 다 gitignore에 추가하고 AWS, GCP 등의 터미널에서 복사해와서 사용한다던지, 외부 환경변수도 그냥 export를 사용한 linux방식으로 외부에서 주입한다던지 요런 방법들만 써왔었고 다른 사람들의 프로젝트에서 우연히 jasypt(JAva Simplified encrYPTion)을 사용한 걸 보긴 했는데 이번 강의에서 처음 써봐서 신기했다. 하지만 현재 프로젝트를 시간이 지나서 관리를 안한다던가, 과거의 것이 되어버린다면 plainPW를 까먹을수도 있으니 어딘가에 기억을 해두고 관리를 해야한다는 점은 있었다. 마지막으로, 거의 끝에 Docker로 빌드하고 Docker-Compose로 사용하는 부분에서 CLI보다는 UI 위주로 알려주는게 좋았다. 개인적으로 나는 docker buildx build --platform linux/amd64,linux/arm64 -t ... 를 사용하는 CLI 방식을 썼었는데 강의에서는 builx를 사용하는 것은 아니었지만, IntelliJ의 UI를 사용하는.. 정확히는 Run Configuration의 IntelliJ Docker 관련 기능을 사용하는 것이 신기했다. 도커 빌드가 실행되기전에 gradle task 2개를 추가하고, 태그를 붙이고 build option을 리눅스에서 돌아가는 환경으로 쫙 쓸 수 있는게 좋았다.나도 전회사에서 프론트엔드분이 도커나 shell script에 대해서 모르셨는데.. 음 WebStorm인가 IntelliJ를 쓰셨는데.. 프론트가 켜지기 전에(npm) 쉘스크립트와 도커컴포즈가 실행되게 Before launch에 Task를 추가해서 프론트엔드분은 프론트 개발에만 치중할 수 있게 셋업해드린 경험이 있었는데 도커로는 처음 써봐서 좋았다.그리고 Docker나 Docker Compose나 Docker Desktop으로 보여줘서 좋았다. 개인적으로는 CLI도 정말 잘써야하지만 그것을 잘 쓸 수 있게 해주는 UI 툴도 잘 사용할 줄 알아야 좀 더 손이 빠른 개발자가 된다고 생각한다. 물론 git/github CLI도 모르면서 UI로만 잘하면 좀 가오떨어지긴하니깐 둘 다 쓸 줄 알아야한다고도 생각한다.UIUI를 사용한 빌드결국 완성한 귀여운 프로젝트 ㅎㅎ 궁금하신 분들은 https://boki-dev.com/로 접속하면 볼 수 있다.메인 화면 Problem(부족, 아쉬웠던 부분)목요일에 어머니가 병원에 입원하셔서 다음날인 금요일에 수술하셨고, 쭉 어머니를 돌보느라 2차 중간 점검 라이브때 참여를 못했다 ㅠㅠ.강의에서 아쉬웠던 부분은.. 음 많은 데이터를 추가한 테이블에서 Pagination이 필요한 경우에는 fetch join으로만으로는 해결이 안될텐데 JPA를 사용하면서 그 부분에 대해서도 있으면 좋았을 것 같다.그 외에는 지식공유자님의 첫 강의였던만큼 부족한 부분이 조금씩은 누구나 있을 것이라고 생각한다. 그리고 나는 약간 젊꼰(젊은꼰대)에 속해서 Backend 영역 즉, Spring을 깊게 공부하고 싶은 사람이라면(내 생각)1. CS & Java Language(언어 학습)2. Java Application Project(프로젝트 실습) - 순수 Java프로젝트, JDBC정도3. JVM, GC 공부4. Spring(프레임워크 학습)5. Spring boot(프레임워크 학습2)6. Springboot Project(프로젝트 실습)7. Kotlin(언어 학습)8. Kotlin/Springboot Project(최종)이렇게 가야지 자신의 실력이나 깊이에 대해서 좌절 또는 현타가 좀 덜 오는 현업에서 부족함 없는 실력자 될 수 있지 않을까 생각하는데..얕게 알고 취업하면 언젠가는 자신의 개발실력에 헌타가 오기도 하고 그러더라..주위에서 보기도 했고 나도 조금은 겪었었다(나도 알고싶지 않았다). 근데 이렇게 말하면 꼰대소리 들으며 왜 코프링(코틀린스프링)부터 시작하면 안되냐고 반문할 지도 모르겠다..ㅎㅎ Try(도전할 부분)강의를 보고 만든 프로젝트는 완성했으니, 기존의 내 개인 프로젝트로 돌아가서 계속 살과 뼈를 붙여가며 완성해보고 싶다.백엔드도 첨에 사이즈를 크게 잡아서.. Redis도 RedisTemplate, Spring Annotation 방식(@Cacheable..), Repository(@RedisHash) 방식들 차이에 대해서 알아보고 더 잘 사용하고, Kotlin에 좀 더 친화적인 Kotlin JDSL도 사용해보고 활성유저의 트래킹이나, 매니저->작업자의 Task 할당에 MQ를 사용한다던지 기능추가를 하며 고도화를 해보고 싶다.프론트쪽은 현업에서 Angular/Vue를 주로 썼었는데, React/Ts 강의도 들어서 프론트엔드 부분은 CRA로 만들 것이다.
풀스택
・
인프런
・
워밍업클럽
・
백엔드
・
프로젝트
・
Kotlin
・
Springboot
・
JPA
・
스터디
・
워밍업클럽스터디
2025. 03. 23.
0
[인프런 워밍업 클럽 3기 - BE/Project] 3주차 회고 발자국 🐾
2주차와 마찬가지로 KPT 회고 프레임워크를 선택해서 작성해보려고 한다! Keep(만족, 지속하고 싶은 부분)이번 3주차는 개인프로젝트에서는 프로젝트쪽에서는 조회 API를 만들었다. API 테스트에서는 mockMVC를 사용하지 않고, 실제 인증 엔드포인트를 호출하고, AccessToken을 받아서 Authorization 헤더에 넣어서 Project 목록을 가져오는 것을 RestClient로 작성했다.DB url은 src단과 test단에서 다른 곳을 바라보게 만들었다. 개인적으로는 컨트롤러->서비스->레포지토리->서비스->컨트롤러 로 흐르는 스택트레이스 요청&응답을 제대로 검증하기위해서는 실제로 사용하는 DB 벤더까지 맞춰야 한다고 생각한다.실제로 배포했다면 AWS 인스턴스로 요청을 날려보면 되겠고! 갠적으로 h2는 학습용으로는 괜찮지만 실제 프로젝트를 할때는 테스트에도 비슷하거나 같은 환경으로 해야한다고 생각한다.강의에서는 ADMIN단을 진행했다. 거의 끝나가고있다!! 좋아! Problem(부족, 아쉬웠던 부분)사실, 이번주에 면접이 있었고, 면접준비도 하느라고 조회과제 테스트코드랑, 금요일까지였던 미션을 완료 못했다.늦게라도 제출을 해서 마무리를 하는 멋쥔 사람이 되려고 노력할 것이다!Try(도전, P에 대한 해결책 등으로 다음번에 보완하거나 시도할 부분)거의 다 온거, 내 프로젝트도 천천히 그리고 차근차근 보완해가며 완성시켜보고 싶다.프론트엔드도 예전에 학습한거를 바탕으로 현업에서 썼던 Vue3대신 React(CRA)로 붙여보고 싶다.테스트코드도 한번 작성해놓으니까 Fixture-Monkey나 Kotest, mockk 사용법이 새록새록 기억도 나고 새로 배우는 것도 있고 그렇다.앞으로 쭉 잘하면 된다!! 나 자신을 응원하자!!!
웹 개발
・
인프런
・
워밍업클럽
・
회고
・
KPT
・
3주차
・
백엔드
・
프로젝트
・
Kotlin
・
Springboot
2025. 03. 16.
0
[인프런 워밍업 클럽 3기 - BE/Project] 2주차 회고 발자국 🐾
1주차와 마찬가지로 KPT 회고 프레임워크를 선택해서 작성해보려고 한다! Keep(만족, 지속하고 싶은 부분)이번 2주차는 개인프로젝트에서는 RDB 모델링을 마친 뒤 엔티티를 정의했으며 현재는 조회 API를 만들고 있고, 강의에서는 Presentation Layer에 대한 부분을 수강했다. 강의가 개인프로젝트보다 좀 빠르지만, 그만큼 개인 프로젝트에 적용할 수 있는 부분에 대한 인사이트를 미리 얻어갈 수 있는 것 같아서 좋다.Problem(부족, 아쉬웠던 부분)또 내 과욕이 부른 스불재(스스로 불러온 재앙) 느낌의 아쉬운 부분을 써보자면.. RDB를 너무 현업과 비슷하게 만드는 것을 목표로 잡지 않았나 싶다..ㅎㅎ 뭐 어쩌겠어~ 벌린 일이니 해야지..!!강의에 대한 내용은 아쉬운게 전혀 없다!! JSP에서 Tag()가 빠진, Spring 공식 팀에서도 밀고 있는 템플릿 엔진인 Thymeleaf를 잘 알고 계시고, 다시 배워보니 좋았다!여담으로, Template for Spring으로는 JSP / Thymeleaf / FreeMarker / Groovy Markup / Jade4j / JTE(Java Template Engine) / Velocity / JMustache / Pebble가 있다.어느것을 택하든 자유이나 Spring에서 공식적으로 Support하고 Advertise하는 제품(라이브러리)를 사용하는 것을 추천한다.Try(도전, P에 대한 해결책 등으로 다음번에 보완하거나 시도할 부분)엔티티를 너무 많이 만들고 관계도 1:N, N:1, N:M(을 풀기위한 중간 엔티티) 여러가지를 사용한만큼 JPA를 잘 알고 사용해서 열심히 풀어나가면 되는 문제이고, SSR대신 CSR로 해서 내가 익숙한 Vue보다는 React with TS로 화면을 구성해보려고 한다.그리고 테스트코드도 좀 더 다양한 방법으로 도전해보면 어떨까싶다(TODO).예를 들면 TestContainer라던지.. 아니면 MockMVC대신에 RestAssured(또는 RestAssuredMockMvc), WebTestClient등을 사용해볼 수도 있겠고 RestDocs 또는 RestDocs와 Swagger를 함께 사용하는 restdocs-api-spec를 써볼수도 있을 것 같다.일단 큰 목표는 마음과 머릿속 한켠에 자리를 잡아두고 MVP(Minimum Viable Product)라고 불리는 최소 기능 제품을 만들어서 정상작동하는데 문제가 없는 제품을 만들고 고도화를 통해서 기능개선 또는 기능추가, 사용성개선 등을 생각해보는게 맞지 않나 싶다!
백엔드
・
인프런
・
워밍업클럽
・
3기
・
프로젝트
・
Kotlin
・
Springboot
・
스프링
2025. 03. 09.
0
[인프런 워밍업 클럽 3기 - BE/Project] 1주차 회고 발자국 🐾
https://code-boki.tistory.com/231먼저, 회고글을 작성하기 전에 회고법으로 사용할 수 있는 전략에 대해서 예전에 작성한 글이 있어서 다시 한번 공유해본다.종종 이런것들을 프레임워크라고 부르기도 한다.디자인 프레임워크, 회고 프레임워크, 백엔드 프레임워크...정해진 틀에 맞춰서 진행하는 것이다.나는 이 중 회고에 사용되는 KPT 회고 프레임워크를 선택해서 이번 한 주의 회고록을 작성해봤다.Keep(만족, 지속하고 싶은 부분)맨 처음부터 섹션3까지 쭉 들었다.웹 서비스를 구성하는 요소: Client, Server, Database브라우저에 주소창을 입력하면 발생하는 일: DNS, IP Resolution, Gateway, Server, DBMS웹 프레임워크/라이브러리Spring Framework: MVC Pattern책임분리(Segregation Of Principle): Layered Architecure(3-tier)스프링 Bean & DI(의존성 주입): 생성자, 수정자, 필드 방식HTTP, Request, ResponseHTTP Method: GET, POST, PUT, PATCH, DELETEHTTP Status Code: 2xx, 3xx, 4xx, 5xxREST API: 자원, 행위, HATEOASSend Data Client to Server: Query Parameter(Query String), Path Variable, Request BodyDBMS: RDB / NoSQLRDB Key: PK(Primary Key), FK(Foreign Key), Candidate KeyRDBMS: Oracle, MySQL, PostgreSQLNoSQL Management System: MongoDB(Document), Redis(Key/Value)JPA/ORMTransaction, Commit, RollbackPersistence Context(영속성 컨텍스트): JPA's 버퍼/캐싱 레이어/임시 메모리호흡이 조금 빠르긴 했지만, 웹 백엔드 개발에 대한 전반적인 지식에 대해서 배울 수 있는 요약본 강의였다.이대로 쭉 마지막 강의까지 듣고 미션도 쭉죽 완성해 나가길 기대한다!Problem(부족, 아쉬웠던 부분)사실 Backend개발에 앞서 Web이란것도 HTTP 0.9/1/1.1/2.0 프로토콜 버전.. TCP/UDP, 네트워크 OSI 7계층, TCP/IP 4계층, 스위치/허브/라우터 등등 알아야 할 것들도 많고Spring쪽으로 넘어오면 Servlet(Java -> Jakarta) 버전부터 한때 JSP(Java Servlet Page)의 출현으로 인한 SSR 발전부터 현재의 CSR부터 다시 SSR(Next.js)등의 개발세계의 히스토리도 풀어줬으면 어땠을까 하는 생각이 들었다.하지만, 비전공자나 코딩이 처음인 사람들 입장에서는 How it Works보다는 How to Use가 중요하니까 이런 포맷으로 준비한게 아니실까 싶다. 그리고 내가 처음 코딩을 배우는 입장이였다면, 위에 나온 내용들이 개발 지식에는 꼭 필요한 것이라 생각해서 잘 구성한 것 같다고도 생각이 들었다.+ Java나 Kotlin 언어적인 것에 대한 내용도 아주 살짝 있었으면 좋았을 것 같았다!Try(도전, P에 대한 해결책 등으로 다음번에 보완하거나 시도할 부분)나름대로 잘 해 나가고 있다고 생각한다. 개인 프로젝트와 더불어서, 강의에 나온 것들 중에서 내가 원래 했던 백엔드 개발에서 놓쳤거나 추가하고 싶은 부분이 있다면 보완해보기도 하고 강의 프로젝트도 차근차근 함께 만들어나가봐야겠다!
백엔드
・
인프런
・
워밍업클럽
・
스터디
・
회고
・
코틀린
・
스프링
・
백엔드