Chapter 10 10.1 시스템 간 강결합 문제 외부 서비스를 사용할 때 발생할 수 있는 문제점 트랜잭션 처리가 애매해진다. 성능이 비교적 감소한다. (외부 서비스 성능에 직접적인 영향을 받게 된다.) 위의 문제를 해결하는 방법은 이벤트를 사용하는 것이다. 10.2 이벤트 개요 이벤트란? 과거에 벌어진 어떤 것. 사용자가 암호를 변경했을 때 > "암호를 변경했음 이벤트"가 벌어졌다고 할 수 있다. 사용자가 주문을 취소했을 때 > "주문을 취소했음 이벤트"가 벌어졌다고 할 수 있다. 도메인의 상태 변경과 관련된 요구사항들을 이벤트를 통해 구현할 수있다. "주문을 취소할 때 이메일을 보낸다."라는 요구사항에서 "주문을 취소할 때"는 주문이 취소 상태로 바뀌는 것을 의미하므로 "주문 취소됨 이벤트"를 이용..
chapter 1 1.1 도메인이란? 도메인: 소프트웨어로 해결하고자 하는 문제 영역 한 도메인은 다시 하위 도메인으로 나눌 수 있다. 하나의 하위 도메인은 다른 하위 도메인과 연동하여 완전한 기능을 제공한다. 특정한 도메인을 위한 소프트웨어라고 해서 모든 기능을 직접 구현하지는 않는다. 하위 도메인을 어떻게 구성할지 여부는 상황에 따라 달라진다. 도메인마다 고정된 하위 도메인이 존재하는 것은 아니다. 1.2 도메인 전문가와 개발자 간 지식 공유 요구사항의 중요성 개발자는 요구사항을 분석하고 설계하여 코드를 작성하고 테스트하고 배포한다. 요구사항을 처음부터 제대로 설계하지 않으면 코드를 수정해야한다. 잘못 개발한 코드를 수정하는 것은 많은 비용이 소모된다. 요구사항을 올바르게 이해하고 설계하는 방법 개발..
3주동안 멘탈 갈려서 쓰는글... 이번 글은 참고가 아니라 그냥 일기장 수준으로 내 신세한탄이 될 것이다... Inflearn에서 배운 kafka버전은 2.13이었다. 지금 시점 기준 최선 버전은 3.X여서 바로 2.13을 찾아 다운받았다. 일단 앞자리가 바뀌면 무슨 에러가 날지 모른다는 것을 비트코인 자동매매 만들면서 살로 느꼈기에... 버전은 최대한 맞춰봤다. 중요한건 강의자료대로 시행했다가 에러가 계속 났다는 것... sink에게 이상한 값을 보냈다.. 하... 그래서 kafka 파일을 전부 삭제하고 시행했는데.. 이상하게도 topic이 그래도 남아있었다. 그래서 connector파일과 jdbc파일까지 전부 삭제.. 그래도 이놈의 topic은 계속 나오기 시작했다... 하... 그래서 공식 문서를 ..
1. 개요 Swagger를 설정하고 나서 내가 개발하고 있는 웹페이지에 적용할 기술이 또 뭐가 있을지를 생각해봤다. 많은 구글링을 통해 ORM이라는 존재를 알게 됐고, Java를 사용하는 Spring boot에 필요한 JPA를 공부하기 시작했다. 전에는 Mybatis와 Mapper를 활용하여 데이터베이스에 접근하는 방식을 사용했는데, Spring Data JPA와 Entity로 개발을 해보니 확실이 편하다는 것을 느낄 수 있었다. 물론 각각의 장단점이 있지만, 쿼리를 객체지향적으로 조작하고 유지보수에 ORM이 강하다는 점은 확실이 알 수 있었다. 또한 데이터베이스 쿼리라면 치가 떨리던 나기에 ORM은 데이터베이스에 대한 종속성 자체가 줄어든다는 강점을 주었다. 이번에는 ORM을 적용하기 위해 기본적인 E..
1. 개요 약 1년전 KNU_30이라는 강남대학교 30주년 이벤트 페이지를 개발한 경험이 있다. 학교에서 서버를 지원해주는 사업이었기 때문에 신나게 서버를 가지고 논 기억이 난다. 단순한 일회성 페이지로 개발되었지만, 프론트 개발을 주도한 친구가 괜찮은 UI를 개발했기 때문에, 동아리도 소개하고 영상들도 첨부하는 페이지가 되었다. 오랜만에 들어가보니 아직도 서버는 구동중이고 방문 로그는 쌓여있는걸 확인할 수 있었다. 서버 한 대가 아깝다는 생각이 들었다. 그래서 관리자 페이지를 만들어 기본적인 데이터 CRUD를 개발하고 싶었다. 교수님을 따로 찾아 봬었다. 팀을 모집하고 장기적으로 개발할 계획이다. 오늘은 그 개발의 첫 단계, Swagger를 활용한 API 개발 명세 자동화이다. 사실 별거 없지만, 그래..
1. 개요 웹 프로그래밍 수업이 시작되었다! 지금까지는 Django를 활용해 공짜 HTML탬플릿과 간단한 코드로 페이지를 만드는게 다였지만 드디어 서버와 같은 중요한 개념에 대해 확실하게 배울 기회가 생긴 것이다. 에브리타임에 강의평도 매우 좋고 선배들이 매우 추천해주시는 교수님의 수업을 들을 수 있어서 매우 다행이었고 첫 시간부터 왜 이 교수님께서 선배들에게 최고의 교수님이라는 말을 들으시는지 알 수 있었다. 서버에 올라오는 파일들의 개념과 컴파일 과정을 정확하게 알려주셨다. 다음은 내가 배운 내용을 정리해본 것이다. 2. 내용 - 웹 서버와 어플리케이션 서버 처음 배운 내용은 웹 서버와 어플리케이션 서버의 차이점이다. 이를 알아야 이후에 배운 아주 중요한 내용인 코드가 서버에서 실행되는 과정을 이해하..
1. 개요 학교에서 프로젝트를 진행하면 약간의 장학금과 3학점을 주는 프로젝트 활동을 진행하였다. 팀단위로 프로젝트를 개발하는 것 자체가 큰 경험이라고 생각하였고 비대면 수업으로 인해 시간도 많아졌다고 생각했기에 (실제로는 절대 아니었다.) 프로젝트에 참여하였다. 나는 데이터베이스를 구축하고 해당 데이터베이스에 저장된 데이터들을 가지고 지도에 위치를 표시하거나 실시간 동선 알림을 확인하는 등의 기능을 구현하였다. 다음은 크롤링을 통해 실시간 확진자 접촉 알림 기능을 구현한 과정을 설명하고자 한다. 2. 크롤링 크롤링을 처음 접한건 1학년 겨울방학 때이다. 한참 알고리즘 문제들로 머리가 아프던 와중에 언어를 활용하는 프로젝트를 진행해보고 싶었고, 그 와중에 크롤링을 공부하기로 마음먹었다. 당시에는 파이썬으..
1.과제 안내문, 예시 출력화면 C++을 공부할 때 Vector와 같은 STL 자료구조에 대해 공부한적이 있었다. 자바에서는 가변저항을 사용한 적은 없지만 이렇게 공부한 덕분에 조금 쉽게 이해할 수 있었다. 아십게도 자바의 가변저항에 대해서는 자세하게 설명하지 않을 것이다. 이 과제는 Paint() 클래스를 다루는 과제이기 때문이다. 다음은 문제 풀이이다. 2. 문제풀이 - ArrayList 그래도 ArrayList에 대한 기본적인 설명은 하고자 한다. ArrayList는 다음과 같이 선언할 수 있다. ArrayList 리스트이름 = new ArrayList(); ArrayList의 가장 좋은 점은 가변리스트 즉, 초반에 크기를 정하지 않아도 되는 리스트라는 것이다. 백준을 많이 풀어보신 분은 알겠지만,..
- Total
- Today
- Yesterday
- spring
- CJ
- java
- Spring Boot
- 코딩테스트
- 코딩
- CJ Olivenetworks
- XML
- 기록지
- Programmers
- 비트코인
- 프로그래머스
- 후기
- 육군
- 코테
- 문자열
- C언어
- 구현
- 백준알고리즘
- 백준 알고리즘
- BaekJoon
- 알고리즘
- 안드로이드 프로그래밍
- c++
- 백준
- Python
- CJ 올리브네트웍스
- 안드로이드 스튜디오
- 자료구조
- 개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |